gpt4 book ai didi

visual-studio-2008 - 在同一解决方案上交叉链接不同项目时,Visual Studio 2008 上的 C++ 链接问题

转载 作者:行者123 更新时间:2023-12-01 00:03:14 24 4
gpt4 key购买 nike

我正在使用 Google 测试框架来设置一些单元测试。我的解决方案中有三个项目:

  • FN(我的项目)
  • FN_test(我的测试)
  • gtest(谷歌测试框架)

  • 我将 FN_test 设置为将 FN 和 gtest 作为引用(依赖项),然后我想我已经准备好设置我的测试(我已经将每个人都设置为/MTd(不这样做会导致我之前链接错误)) .

    特别是,我在 FN 中定义了一个名为 Embark 的类,我想使用 FN_test 进行测试。到现在为止还挺好。因此,我使用 googletest 编写了一个名为 EmbarkTest 的类,声明了一个成员 Embark* 并在构造函数中写入:
    EmbarkTest() {
    e = new Embark(900,2010);
    }

    然后,按下 F7,我得到以下信息:
    1>FN_test.obj : error LNK2019: unresolved external symbol "public: __thiscall Embark::Embark(int,int)" (??0Embark@@QAE@HH@Z) referenced in function "protected: __thiscall EmbarkTest::EmbarkTest(void)" (??0EmbarkTest@@IAE@XZ) 1>D:\Users\lg\Product\code\FN\Debug\FN_test.exe : fatal error LNK1120: 1 unresolved externals
    有人知道我做错了什么和/或我能做些什么来解决这个问题?

    编辑 : Embark.h 中的相关代码
    class Embark
    {
    public:

    //Constructor for initial state
    Embark(int _id, int _year);
    //Destructor
    ~Embark();
    /* ... */
    }

    最佳答案

    我发现答案很简单。经过两天激烈的敲头,是这样的:

    您必须将主项目编译为 .lib而不是 .exe

    这样做之后,所有的链接都变成了一种幸福。我认为 Visual Studio 会自动为我做这件事,因为我从 FN_test 声明了对 FN 的依赖:我认为 Visual Studio 会创建库。它没有。

    咆哮 (此后无需阅读)
    由于将一个生成可执行文件的项目链接到另一个执行相同操作的项目是相当罕见的,因此在此类问题上查找引用资料有些困难。谷歌搜索没有给我任何有用的结果。 MSDN 论坛也没有帮助。

    但是,当您对应用程序进行单元测试时,是否会经常发生这种情况,例如,在同一个解决方案上进行测试项目和应用程序项目?我对 C++ 的其他测试框架一无所知。我选择了谷歌测试框架:

  • 我们信任 Google
  • 很棒的文档
  • 使用和理解非常简单

  • 但是,然而,它在集成方面没有太多优点。我认为其他工具会更好地与 Visual Studio 集成,IDE 响应能力包括在内。但我宁愿现在受苦也不愿以后受苦。我希望这个工具不断改进,因为我喜欢它。

    关于visual-studio-2008 - 在同一解决方案上交叉链接不同项目时,Visual Studio 2008 上的 C++ 链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507595/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com