我有问题,不知道如何解决。我相信这是愚蠢的:
我有3个文件:
实用程序
class Util
{
public:
class BitParser
{
public:
static bool getBitAt(int buf, int idx);
};
};
实用程序
#include "Util.hpp"
bool Util::BitParser::getBitAt(int buf, int idx)
{
return true;
}
application.cpp
#include "Util.hpp"
int main(int argc, char* argv[])
{
Util::BitParser::getBitAt(1,1);
}
当然,上面列出的文件位于同一目录中。现在,当我尝试链接和编译时,我收到链接器错误:
$ g++ -o app application.cpp
application.cpp:(.text+0x19): undefined reference to `Util::BitParser::getBitAt(int, int)'
collect2: ld returned 1 exit status
搞砸了什么?
最佳答案
您告诉g++编译您的“主”程序,但没有告诉它有关Util模块的信息。在命令行中添加Util.cpp
,一切都应该正常工作。
编译器生成了一个引用Util::bitparser
函数的“application.o”文件。
链接器应将这些引用“链接”到“util.o”文件,其中包含这些功能的实际代码。但是它没有.o文件包含满足链接的功能。这就是所谓的“ undefined reference ”:“application.o”是指链接器未找到的函数。
关于c++ - 嵌套类, undefined reference ,静态方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7987322/