我遇到这个错误,纯粹是收到IDE的毒害,导致自己傻子似的不知道程序是怎样被编译执行的。
为了详细解释,先写了一个头文件a.h如下:
class A
{
public:
int a;
A();
~A();
};
再写一个源文件a.cpp如下:
#include "a.h"
A::A()
{
a = 1;
}
A::~A()
{
}
来吧,gcc上阵!
g++ main.cpp -o main.exe
有问题吗?yes!错误出来了,请看
main.cpp:10: undefined reference to `A::A()'
main.cpp:10: undefined reference to `A::~A()'
main.cpp:10: undefined reference to `A::~A()'
shit!怎么搞的!思前想后,发现自己二了,而且二了很多。。。亲,只编译main.cpp,你让a.cpp情何以堪啊!!
于是乎,我们需要同时编译多个源文件。解决方案如下:
g++ a.cpp main.cpp -o main.exe
就这样华丽地通过了。记住,别忽略了main以外的任何.cpp文件!