gpt4 book ai didi

c++ - 使用 &MyClass::MyFunction 时出现 undefined reference 链接错误

转载 作者:行者123 更新时间:2023-11-28 03:48:17 25 4
gpt4 key购买 nike

这让我很困惑,所以我想我应该在这里查询:

我有一个类如下:

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/

25 4 0
文章推荐: c++ - 如何创建一个计时器重复运行我的程序? C++
文章推荐: html - 有没有可以自动缩放HTML图像 map 的工具?
文章推荐: javascript - 如果 JSON 在 中返回空显示消息