我的问题与此类似,但我不知道如何在 Eclipse 中修复它。
在 Eclipse 上编译一个小程序时,我有一个奇怪的行为。当我在标头的末尾包含 .cpp 文件(并删除 .cpp 中的 .h 的包含)时,它会编译,否则不会。
我试图包含的课程在一个单独的项目中,并且该项目已正确链接。
这是一个例子:
在项目来源
文件 myclass.h
#ifndef MYCLASS_H_
#define MYCLASS_H_
namespace lol
{
class myclass{ public // definitions... }
}
//#include myclass.cpp //**works when I uncomment this**
#endif
文件 myclass.cpp
#include "myclass.h" // ** does not work unless I include my .cpp (unity build like) **
// and I don't want to include .cpp files
namespace lol{ // not funny
myclass::myclass(){
} //code ... code
}
在其他项目 mainFile.cpp
#include "myclass.h" // works only if I include myclass.cpp at the end of myclass.h
using namespace lol;
int main(){
myclass obj = myclass(); // gives undefined reference to lol::myclass::myclass()
}
我可以通过从 makefile 构建所有内容来解决这个问题,这是我喜欢的解决方案,但遗憾的是我需要使用 eclipse。
有什么建议么?
谢谢!