0
當鏈接錯誤未定義參考這只是有我難住了,所以我想我會查詢位置:使用和MyClass的:: MyFunction的
我有一個類如下:
class MyClass {
public:
void myThreadFunc();
};
這是在頭。在構造函數中
MyClass::MyClass() {
...
boost::thread t(boost::bind(&MyClass::myThreadFunc, this));
...
}
正如我所見。沒有編譯時錯誤。然而,當我鏈接如下:
g++ -o test.exe main.o MyClass.o /*specify boost and other libraries */
我得到:
MyClass.o:MyClass.cpp:(.text+0xa4): undefined reference to `MyClass::myThreadFunc()'
collect2: ld returned 1 exit status
不使任何意義。令我特別奇怪的是這是一個鏈接器錯誤。我包含了我的兩個對象文件。
誰能告訴我發生了什麼事?如果它可能是相關的,我在Windows上的MinGW。
編輯:
史詩般的失敗。在我的cpp文件中定義函數時,我忘了MyClass ::前綴。我只是沒有決定檢查。幾乎和在班級定義之後忘記半夏林一樣糟糕。
哈哈,對不起!我編輯了錯誤代碼,以便對問題的概念佈局有意義。不想阻塞我的應用程序的具體細節。 – cemulate
顯然'MyClass :: myThreadFunc()'沒有被定義,或者在鏈接時沒有包含的對象文件中。您需要添加更多詳細信息和/或重現問題的小樣本。 –
@Georg Fritzsche我已經將它更改爲我的小測試用例應用程序中的錯誤,我原來包含發生問題的實際應用程序中的錯誤。 – cemulate