LNK2001所有私有方法
LNK2001 on all private methods
我有一个带有源代码的项目,以及同一解决方案中的测试项目。
在测试项目中使用 GTest 框架的测试文件已从主项目中获取了Composite.h
头文件的#include
。
在第一个 GTest 的主体中,我实例化了在 Composite.h
中声明的复合类。此行给出一个编译错误LNK2001:Composite 类的每个私有方法上的未解析外部符号。
myTest.cpp
文件中的代码如下所示
#include "Composite.h"
TEST(testComposite, testCase1)
{
Composite c; // error LNK2001
// my test here;
}
这个实例化有什么问题?
编辑
我链接到包含复合类中私有方法实现的库。另外,我尝试 #inlcude 此类源代码的.cpp。任一解决方案都无法解决问题。
编辑 -- 问题
这是否是包含复合类及其父类(已定义Q_OBJECT
)的 moc 文件的文件夹是不可见的?
我尝试在测试项目属性的附加目录中添加包含 moc 文件的文件夹。这也行不通。
实例化应该没有问题。我假设有一个复合.cpp包含您丢失或未解析的代码。
您需要将此复合.cpp添加到项目中,或将应用程序链接到包含复合的库.cpp
包含与
程序的链接无关。您包含的内容对编译很重要,并且发生在链接之前。要解决您在此处显示的问题,您需要链接到包含您提到的私有方法实现的任何内容(对象文件、库)。
相关文章:
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 我的类中有方法的指针数组,但我不能调用我的方法.代码如下
- 如何处理一个子类有方法,而另一个没有方法的子类?
- 有方法的类,我不明白类的外观
- 是否有方法为模板参数指定所需的定义
- 是否有方法将相对库路径添加到可执行文件以避免设置LD_library_path
- 是否有方法将所有赋值运算符(+=、*=等)转发为隐式使用重写的直接赋值运算符(=)
- 是否有方法使用vector的内容作为键和自定义值来初始化unordered_map ?
- 在调用main函数之前,是否有方法解析命令行选项?
- 在c++中是否有方法对成员变量(类)进行后期初始化?
- 是否有方法为任何指针类型定义转换操作符
- 是否有方法为窗口窗体中的特定按钮挂钩鼠标事件
- 是否有方法检测内联函数ODR违规
- 在Windows Vista+上不注册proppage.dll,是否有方法访问远程过滤器图?
- 模板:只执行类中有方法的方法
- 是否有方法使Visual Studio对include区分大小写
- 是否有方法在调用函数时防止隐式的static_cast ?