我開始實施一個大型程序。但是我遇到了一個大問題。所以這裏是我的程序非常簡化的代碼。我有一個單獨的.c文件,用於我的功能,它是normal.c主程序是main.c和我已經鏈接這兩個與cal.h頭文件。C - 未鏈接文件引用功能錯誤
的main.c
#include <stdio.h>
#include "cal.h"
void main()
{
int num1, num2, ans;
num1=5;
num2=5;
ans=add(num1, num2);
printf("%d" ,ans);
}
normal.c
#include "cal.h"
int add(int num1, int num2)
{
return num1+num2;
}
cal.h
#ifndef CAL_H_INCLUDED
#define CAL_H_INCLUDED
#include <errno.h>
int add(int num1, int num2);
#endif // CAL_H_INCLUDED
但是當我編譯此,它給出了錯誤 .. \ main.c | 10 |對'add'|的未定義引用
我在Windows 8.1中使用CodeBlocks v.13.12任何回答這個問題都非常感謝。我也嘗試過使用CodeLite,但同樣的錯誤發生。謝謝!
當你鏈接的文件,你有'normal.o'? – Barmar
不,我沒有。我很抱歉,因爲我是C新手,我不知道如何處理'.o'文件。解釋將是一個很大的幫助! –
我不能說CodeBlocks是如何工作的,但這裏一般是C編譯的工作原理。每個.c文件分別*編譯*到一個.o文件(一個「目標文件」)。所以你的main.c將被編譯爲main.o,並且normal.c將被編譯爲normal.o。這些都不可執行,並且不是完整的程序。 然後,兩個目標文件鏈接在一起。在這種情況下,「鏈接」是一個技術術語,與您的使用不同 - 這是鏈接器執行的一個步驟。鏈接器生成您的實際可執行文件。 通常,IDE會自動鏈接同一項目中的任何.c文件。 – EvanED