我研究了所有类似的主题,但没有找到解决方案。
我有一个带有3个项目的Visual Studio解决方案:
具有单元测试的项目(控制台应用程序)
->引用了上述两个项目(人民币->添加引用...)
->具有... / gtest和gtest / include的包含路径,以及来自主项目的包含路径
我能够编译项目1和2。当我尝试编译项目3时,出现以下问题:
3> UnitTesting.cpp 3> UnitTesting.obj:错误LNK2001:未解析的外部符号“ public:__ thiscall Stack :: Stack(void)”(?? 0callbacks @@ QAE @ XZ)
3> UnitTesting.obj:错误LNK2001:未解析的外部符号“ public:__thiscall Stack ::〜Stack(void)”(?? 1callbacks @@ QAE @ XZ)
换句话说,我可以看到第一个项目的* obj文件的链接问题(堆栈类在我要进行单元测试的第一个项目中定义)。
我看过以下内容:
要在单独的项目中使用符号,您需要在项目设置中包含lib文件。这是在项目属性的“链接器”部分的“输入”->“附加依赖项”中完成的。
上述问题是我的第一个项目中没有任何* lib文件(并且我不想从中创建一个库),每个类只有* obj文件(并且可执行文件)。
这是与其他相关主题中描述的问题不同的问题。在这种情况下,我不想链接库(* lib)。我想链接目标文件(* obj)。在g ++世界中,只需指定编译器/链接器的* obj文件列表即可。
g++ -o app first.obj second.obj third.obj
但是我不知道,我找不到如何在VC ++ 2017中链接它。
未链接包含符号定义的目标文件或库。在Visual Studio中,验证包含定义的源文件是否已构建并链接为项目的一部分。在命令行上,确认包含该定义的源文件已被编译,并且所生成的目标文件已包含在要链接的文件列表中。。
->如何在VC ++ 2017中进行检查? ->在哪里可以打开链接器的详细输出?
请帮助我解决此问题。我是Visual C ++的新手。