我有一个包含源代码的项目,以及同一解决方案中的TestProject。
TestProject中使用GTest框架的测试文件从主项目获得了#include
头文件Composite.h
。
在第一个GTest的主体中,我实例化Composite.h
中声明的Composite类。这一行给出了一个编译错误LNK2001:Composite类的每个私有方法上都有未解析的外部符号。
myTest.cpp
文件中的代码看起来像那样
#include "Composite.h"
TEST(testComposite, testCase1)
{
Composite c; // error LNK2001
// my test here;
}
这个实例化出了什么问题?
修改 的
我链接到包含Composite类中私有方法实现的库。此外,我还尝试#inlcude .cpp来获取此类的源代码。这两种解决方案都无法解决问题。
编辑 - 问题
这可能是具有复合类及其父类(定义了Q_OBJECT
)的moc文件的文件夹是看不见的吗?
我尝试在Test Project属性的附加目录中添加包含moc文件的文件夹。这也不起作用。
答案 0 :(得分:1)
包含与程序的链接无关。您包含的内容包括编译和链接之前的内容。要解决此处显示的问题,您需要链接任何(目标文件,库)包含您提到的私有方法的实现。
答案 1 :(得分:1)
实例化应该没有问题。我假设有一个Composite.cpp包含您丢失或未解析的代码。
您需要将此Composite.cpp添加到项目中或将应用程序链接到包含Composite.cpp的库