gpt4 book ai didi

c++ - Gtest 测试项目链接到其他可执行文件

转载 作者:行者123 更新时间:2023-11-28 05:24:52 25 4
gpt4 key购买 nike

我有一个项目,我添加了一个 gtest 项目,然后将原始项目转换为 .lib 项目,并从第三个新项目调用其 main() 函数。这样,我就可以用项目 .exe 构建测试 .exe。除了,它不起作用。

这些是我所遵循的步骤 here
创建或打开一个项目,然后为其创建一个 Win32 控制台应用程序测试项目。
右键单击测试项目,转到属性,并将配置设置为调试。
转到配置属性 > C/C++ > 常规 >> 其他包含目录并添加 gtest 包含文件夹。
在 Code Generation > Runtime Library 下,选择 MDt 或 MTd;待测项目使用的任何东西。
在 Linker > General > Additional Library Directories 下,添加对带有 gtestd.lib 的文件夹的引用。
在 Input > Additional Dependencies 下,添加 gtestd.lib。
右键单击测试项目,转到属性,将配置设置为发布,然后执行步骤 3 和 4。
在 Linker > General > Additional Library Directories 下,添加对带有 gtest.lib 的文件夹的引用。
在 Input > Additional Dependencies 下,添加 gtest.lib。

这些是我在链接测试项目时遵循的步骤,如前所述 here
右键单击测试项目,转到Build Dependencies > Project Dependencies,添加要测试的项目。
转到属性 > C/C++ > 常规 > 其他包含目录并包含要测试的项目的 header 。
在Linker > Input > Additional Dependencies下,输入项目的.lib文件

问题来了
出于某种原因,测试项目出奇地有效,但仅限于发布 模式。尽管具有与测试项目相同的设置,但包装项目在任何一种模式下都不起作用。我已经查看了 20 种可能的解决方案,但还没有找到一个。我还在库项目中的每个方法前面尝试了 __declspec(dllexport),但这并没有起到任何作用。 VS 正在与我奋战。

我尝试过的其他东西
我不想每次需要测试时都更改项目来构建 .lib。所以我研究了使用预链接构建事件从项目中创建 .exe.lib,但它似乎只接受控制台命令,我不能弄清楚如何从我从另一个 SO 答案获得的控制台命令中连接生成的 .lib 文件。

这是存在这些问题的当前 .sln 文件。 URL 是绝对的:https://drive.google.com/file/d/0B6r81tGW7hODeXNpR3ROc3hYMWc/view?usp=sharing

我如何简单地制作一个测试项目和包装器项目来启动一个普通项目(在调试和 Release模式下都有效)?

最佳答案

修复:

  1. 在 SimpleCalc(调试)中,更改 Project |属性 |一般 |配置类型静态库。这就是 Release 有效而 Debug 无效的原因。
  2. 对于 SimpleCalcWrapper,选择 Project |添加引用... 并添加 SimpleCalc。这就是 SimpleCalcWrapper 不起作用的原因。
  3. 对于 SimpleCalcTest(发布版),重置为默认值 Project |属性 |链接器 |进阶 | Import Library 或 SimpleCalcTest.exe 将无法编译。
  4. 对于 SimpleCalcTest,更改 Project |属性 | C/C++ |附加包含目录$(SolutionDir)\gtest\include;$(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories)。这将使它们与项目相关。
  5. 对于 SimpleCalcTest,更改 Project |属性 |链接器 |附加库目录$(SolutionDir)\gtest;%(AdditionalLibraryDirectories) - 您不需要 SimpleCalc 目录,因为该项目已添加到引用中。
  6. 对于 SimpleCalcWrapper,更改 Project |属性 | C/C++ | $(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories)
  7. 的附加包含目录
  8. 对于 SimpleCalcWrapper,重置为默认值 Project |属性 |链接器 |其他库目录 - 您不需要 SimpleCalc 目录,因为该项目已添加到引用中。

关于c++ - Gtest 测试项目链接到其他可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40759562/

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