0

该问题特定于VS2010。我无法在一个简单的案例中重现它来给出一个 MCVE(见下文)。

有一些旧的遗留项目。它(除其他外)有 3 个 C++ 项目:

  1. GoogleTestingFramework - 一个从和.lib提供功能的项目 。为使用简单而创建。GTestGMock

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

    • 这里感兴趣的实体是Class1Class2。两者都在单独的文件中,Class1.cpp+ Class1.hpp(与 Class2 相同)。
  3. OldLegacyProjectUnitTests - 一个使用和.exe编写单元测试的新项目。GTestGMock

当我尝试构建所有内容时,出现以下类似错误:

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

我将不胜感激。

4

0 回答 0