问题是VS2010特有的。 我无法在一个简单的情况下重现它来给MCVE(见下文)。
有一些旧的遗留项目。它有(其中包括)3个C ++项目:
GoogleTestingFramework - 一个.lib
项目,可提供以下功能:
GTest
和GMock
。为简化使用而创建。
OldLegacyProject - 一个旧的.exe
项目。
Class1
和Class2
。两者都在单独的文件中,Class1.cpp
+ Class1.hpp
(对于Class2也是如此)。 OldLegacyProjectUnitTests - 一个新的.exe
项目,单元测试已写入
使用GTest
和GMock
。
GoogleTestingFramework
和OldLegacyProject
。Use Library Dependency Inputs
更改为true
,但未对此问题进行任何更改Class1
和Class2
(因为它们是对它们进行单元测试)并且需要与其.obj
的当我尝试构建所有内容时,我会遇到以下错误:
3>OldLegacyProjectUnitTests.obj : error LNK2019: unresolved external symbol "public: __thiscall Class1::Class1(class Class2 &)" (??0Class1@@QAE@AAVClass2@@@Z) referenced in function "private: virtual void __thiscall SimpleCase_Should_CreateNewInstance_When_Called_Test::TestBody(void)" (?TestBody@SimpleCase_Should_CreateNewInstance_When_Called_Test@@EAEXXZ)
3>OldLegacyProjectUnitTests.obj : error LNK2019: unresolved external symbol "public: __thiscall Class2::Class2(void)" (??0Class2@@QAE@XZ) referenced in function "private: virtual void __thiscall SimpleCase_Should_CreateNewInstance_When_Called_Test::TestBody(void)" (?TestBody@SimpleCase_Should_CreateNewInstance_When_Called_Test@@EAEXXZ)
3>../Debug/OldLegacyProjectUnitTests.exe : fatal error LNK1120: 2 unresolved externals
我使用指南Google Test #1.b: Setup Googletest in Visual Studio创建了一个简单的示例,其配置与上面相同,并且它可以正常工作。
问题是:
如果我明确地向那些.obj
添加路径,那么一切都会正确编译和链接。但是,这是一个非常复杂的方式,我想给那些处理这些相对简单的指示的人。
我将不胜感激。