-1
使用代碼::塊和GNU GCC編譯器,我就跟着去了,使我自己的圖書館:未定義參考++庫函數
//main.cpp (Library)
int SampleAddInt(int i1, int i2)
{
return i1 + i2;
}
它編譯成某文件。然後我做了一個單獨的項目來測試庫函數。確保我在Build選項中正確鏈接了它。這裏是我的項目中使用它我的代碼:
//main.cpp (Test Project)
#include <iostream>
using namespace std;
//Declaration of function from library
int SampleAddInt(int i1, int i2);
int main(){
int x = SampleAddInt(2, 4);
cout << x << "test" << endl;
}
得到試圖編譯我的測試項目時,這個錯誤:
的main.cpp | 9 |未定義的參考`SampleAddInt(INT,INT)」 |
由於某種原因,它似乎無法找到此功能。然後,在我的測試項目main.cpp源文件的聲明周圍包裝了extern「C」{...},並且它構建正確。
爲什麼當我的庫從main.cpp源代碼編譯時,是否需要使用extern「C」作爲我的庫來使用我的測試項目?爲什麼當我不使用extern「C」時,編譯器告訴我該函數是一個未定義的引用?
您是否意外地使用'gcc'編譯庫文件而不是'g ++'也許? –
我使用了Code :: Blocks IDE。當我設置IDE時,它詢問我要使用哪個編譯器,並選擇了GNU GCC編譯器。這是不正確的?我記得讀過GNU GCC編譯器並編譯C和C++。這是我的系統中檢測到的唯一一個。 –
這是相同的編譯器,是正確的,但你必須確保以C++模式編譯C++文件。如果使用'g ++',通常這是默認的。您應該看到在代碼塊的控制檯窗口中使用的命令行命令。 –