- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这让我很困惑,所以我想我应该在这里查询:
我有一个类如下:
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::前缀。我只是没有决定检查一下。几乎和类定义后忘记分号一样糟糕。
最佳答案
您需要在某处为 MyClass::myThreadFunc()
编写一个函数体。为 MyClass
编写构造函数不同于实现 MyClass::myThreadFunc()
成员函数。
如果你在 C/C++ 中调用一个函数,它必须在某处有一个函数体。这就是为什么它是一个链接器错误;它试图在所有可用的目标文件中找到函数体,但你没有写一个所以它不能。
关于c++ - 使用 &MyClass::MyFunction 时出现 undefined reference 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6672529/
我是一名优秀的程序员,十分优秀!