这让我很难过,所以我想我会在这里查询:
我有一堂课如下:
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:: 前缀。我只是没有决定检查。几乎和在类定义后忘记分号一样糟糕。