Gtest 测试项目 link 到其他可执行文件

Gtest test project link to other executable

我有一个项目,我添加了一个 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.
文件夹的引用 在输入 > 附加依赖项下,添加 gtest.lib。

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

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

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

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

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

修复:

  1. 在 SimpleCalc(调试)中,将 Project | Properties | General | Configuration type 更改为 Static Library。这就是 Release 有效而 Debug 无效的原因。
  2. 对于 SimpleCalcWrapper,select Project | Add reference... 并添加 SimpleCalc。这就是 SimpleCalcWrapper 不起作用的原因。
  3. 对于 SimpleCalcTest(发布版),重置为默认值 Project | Properties | Linker | Advanced | Import Library 或 SimpleCalcTest.exe 将无法编译。
  4. 对于 SimpleCalcTest,将 Project | Properties | C/C++ | Additional Include Directories 更改为 $(SolutionDir)\gtest\include;$(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories)。这将使它们与项目相关。
  5. 对于 SimpleCalcTest,将 Project | Properties | Linker | Additional Library Directories 更改为 $(SolutionDir)\gtest;%(AdditionalLibraryDirectories) - 您不需要 SimpleCalc 目录,因为该项目已添加到引用中。
  6. 对于 SimpleCalcWrapper,将 Project | Properties | C/C++ | Additional Include Directories 更改为 $(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories)
  7. 对于 SimpleCalcWrapper,重置为默认值 Project | Properties | Linker | Additional Library Directories - 您不需要 SimpleCalc 目录,因为该项目已添加到引用中。