使用项目引用链接到GoogleTest的另一个项目的.obj文件

时间:2015-10-10 23:25:45

标签: c++ visual-studio-2010 linker lnk2019 project-reference

问题是VS2010特有的。 我无法在一个简单的情况下重现它来给MCVE(见下文)。

有一些旧的遗留项目。它有(其中包括)3个C ++项目:

  1. GoogleTestingFramework - 一个.lib项目,可提供以下功能: GTestGMock。为简化使用而创建。

  2. OldLegacyProject - 一个旧的.exe项目。

    • 此处感兴趣的实体为Class1Class2。两者都在单独的文件中,Class1.cpp + Class1.hpp(对于Class2也是如此)。
  3. OldLegacyProjectUnitTests - 一个新的.exe项目,单元测试已写入 使用GTestGMock

  4. 当我尝试构建所有内容时,我会遇到以下错误:

    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添加路径,那么一切都会正确编译和链接。但是,这是一个非常复杂的方式,我想给那些处理这些相对简单的指示的人。

    我将不胜感激。

0 个答案:

没有答案