0

我有一个带有源代码的项目,以及一个位于同一解决方案中的 TestProject。

在TestProject 中使用GTest 框架的测试文件已经从主项目中获得了一个#include头文件。Composite.h

在第一个 GTest 的主体中,我实例化了在Composite.h. 这一行给出了编译错误 LNK2001:复合类的每个私有方法上的未解析外部符号。

文件中的代码myTest.cpp如下所示

#include "Composite.h"

TEST(testComposite, testCase1)
{
    Composite c;  // error LNK2001
    // my test here;
}

这个实例化有什么问题?

编辑

我链接到包含复合类中私有方法实现的库。另外,我尝试替代#inlcude .cpp 获取此类的源代码。任何一种解决方案都不能解决问题。

编辑——问题

这可能是看不到包含复合类及其父类(Q_OBJECT已定义)的 moc 文件的文件夹吗?

我尝试在测试项目属性的附加目录中添加包含 moc 文件的文件夹。这也不起作用。

4

2 回答 2

1

实例化应该没有错。我假设有一个 Composite.cpp 包含您丢失或未解决的代码。

您需要将此 Composite.cpp 添加到您的项目中或将您的应用程序链接到包含 Composite.cpp 的库

于 2014-04-04T09:12:02.577 回答
1

包含与程序的链接无关。您包含的内容对编译很重要,并且发生在链接之前。要解决您在此处显示的问题,您需要与包含您提到的私有方法的实现的任何(目标文件,库)链接。

于 2014-04-04T09:04:33.087 回答