ค; ส่วนหัวและรหัส

ฉันเป็นมือใหม่ในการเขียนโปรแกรม C ดังนั้นฉันจึงมีคำถามเกี่ยวกับสิ่งพื้นฐาน
เมื่อฉันทำงานกับแพ็คเกจที่ไม่ได้มาตรฐานและรวมส่วนหัวไว้ในโปรเจ็กต์ของฉัน ฉันมักจะได้รับข้อผิดพลาด "การอ้างอิงถึงฟังก์ชันที่ไม่ได้กำหนด" เสมอ ฉันเห็นว่าไฟล์ส่วนหัวไม่มีโค้ดฟังก์ชันภายใน และฉันเดาว่าฉันต้องเชื่อมโยงส่วนหัวกับโค้ดด้วยวิธีใดวิธีหนึ่ง ดังนั้นคำถามของฉันคือ ฉันควรค้นหาไลบรารีบางตัว เช่น dll ซึ่งมีฟังก์ชันต่างๆ หรือไม่ หรือควรมองหาไฟล์ต้นฉบับ C และไม่ว่าในกรณีใด ฉันจะเชื่อมโยงไลบรารีเหล่านั้นกับส่วนหัวและรวมเข้าด้วยกันเพื่อทำงานได้อย่างไร โครงการของฉัน? ฉันใช้ CodeBlocks + MinGW


person Heiko Herlich    schedule 16.01.2014    source แหล่งที่มา
comment
สนใจที่จะยกตัวอย่างแพ็คเกจที่คุณรวมไว้หรือไม่? เช่น #include <math.h> หรืออะไรที่ไม่ค่อยธรรมดา?   -  person Macattack    schedule 17.01.2014
comment
รวมไฟล์ส่วนหัวในรหัส C เชื่อมโยงไปยังห้องสมุดที่เหมาะสม เนื้อหาส่วนใหญ่จะบอกคุณถึงส่วนหัวและไลบรารีที่เหมาะสมในเอกสารประกอบ   -  person Ed Heal    schedule 17.01.2014
comment
ห้องสมุดเหล่านั้นมีส่วนขยายอะไรบ้าง? หากเป็น .dll ฉันไม่เห็นไฟล์ dll ใด ๆ ในแพ็คเกจนี้โดยเฉพาะ   -  person Heiko Herlich    schedule 17.01.2014
comment
@HeikoHerlich - มีเอกสารประกอบหรือไม่?   -  person Ed Heal    schedule 17.01.2014
comment
@HeikoHerlich คุณใช้ห้องสมุดไหน?   -  person abhi    schedule 17.01.2014
comment
ลิงก์สำหรับแพ็คเกจที่ฉันดาวน์โหลด:portaudio.com/archives/pa_stable_v19_20111121.tgz ฉันรวม portaudio.h ไว้ในโปรแกรมของฉันแล้ว   -  person Heiko Herlich    schedule 17.01.2014
comment
ไม่มี dll ในแพ็คเกจนี้ แสดงว่ามีอะไรหายไปใช่ไหม   -  person Heiko Herlich    schedule 17.01.2014
comment
ในหน้าบทช่วยสอนมีคำแนะนำในการคอมไพล์สำหรับแพลตฟอร์มต่างๆ คุณเคยดูหน้านี้แล้วหรือยัง? portaudio.com/docs/v19-doxydocs/tutorial_start.html   -  person Macattack    schedule 17.01.2014
comment
คุณต้องรวบรวมสิ่งนั้น มันเป็นเพียงซอร์สโค้ด เพียงแค่อ่านเอกสาร   -  person Ed Heal    schedule 17.01.2014


คำตอบ (2)


คุณต้องสร้าง (จริงๆ แล้วเชื่อมโยงกับไลบรารี) ไฟล์ปฏิบัติการของคุณกับไลบรารีภายนอกที่คุณใช้อยู่ ซึ่งคุณสามารถระบุได้โดยใช้แฟล็ก -L path to lib gcc

e.g

gcc -L path_to_lib -llib prog.c -o executable

คุณสามารถใช้ locate lib_name เพื่อทราบเส้นทางของไลบรารี

person abhi    schedule 16.01.2014

เมื่อใดก็ตามที่คุณมีไฟล์ส่วนหัวในภาษา C คุณจะมีไฟล์ส่วนหัว ตัวอย่าง:

//func.h
int myfunc(int x);

จากนั้นคุณจะมีไฟล์ต้นฉบับ

บล็อกคำพูด

//func.c
#include "func.h"
int myfunc(int x)
{
    return x;
}

จากนั้นไฟล์ต้นฉบับของคุณที่มี main()

//main.c
#include "func.h"
int main(){
    int x = 2;
    x = myfunc(x);
    return x;
}

ใน ide ของคุณ คุณรวม main.c และ func.c ไว้ในไฟล์ต้นฉบับของคุณ และรวม func.h ไว้ในไฟล์ส่วนหัวของคุณ

ฉันไม่ได้ใช้บล็อกโค้ด แต่โดยพื้นฐานแล้ว IDE ใด ๆ จะทำงานในลักษณะนี้

person am6sigma    schedule 16.01.2014