我现在快疯了。似乎gcc有问题,并且无法打开包含文件在链接时找不到函数DoIt()
。我尝试在代码块中编译此代码,但该代码无法正常工作,因此我在控制台中使用G ++对其进行了尝试,但仍无法正常工作。所以我认为这是gcc的问题。
这是我的代码
main.cpp
#include <iostream>
#include "source.h"
int main()
{
std::cout<<"That works"<<std::endl;
DoIt();
while(true)
{
}
return 0;
}
source.cpp
#include "source.h"
#include <iostream>
void DoIt()
{
std::cout<<"That works too"<<std::endl; //Currently doesn't work
}
source.h
void DoIt();
这就是我在终端上写的
g++ main.cpp -std=c++11 -o result
这是我运行它时的错误消息
/tmp/ccG6X4Bw.o: In function `main':
main.cpp:(.text+0x2d): undefined reference to `DoIt()'
collect2: error: ld returned 1 exit status
我不知道为什么它不起作用
答案 0 :(得分:0)
默认情况下,gcc
将尝试编译和链接。没有来自source.cpp
的代码的链接将导致链接器无法将DoIt
的调用链接到其代码。如果您只想编译,请将-c
传递给gcc
。
在手册页中:
When you invoke GCC, it normally does preprocessing, compilation, assembly and linking. ... -c Compile or assemble the source files, but do not link. The linking stage simply is not done.