This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?
                                
                                    (32个答案)
                                
                        
                                5年前关闭。
            
                    
我在同一个解决方案中有一个带有源代码的项目和一个TestProject。

在TestProject中使用GTest框架的测试文件从主项目获得了头文件#includeComposite.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作为此类的源代码。两种解决方案都不能解决问题。

编辑-问题

难道是看不到包含Composite类及其父类(定义了Q_OBJECT)的moc文件的文件夹吗?

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

最佳答案

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

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

关于c++ - LNK2001关于所有私有(private)方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22858170/

10-08 22:22