我有一个项目,我添加了一个gtest项目,然后将原始项目转换为.lib项目,并从第3个新项目调用其main()函数。这样,我可以使用项目.exe构建测试.exe。除外,它不起作用。
这些是我提到的here 之后的步骤
创建或打开一个项目,然后为它创建一个Win32控制台应用程序测试项目
右键单击测试项目,转到属性,然后将“配置”设置为“调试”
转到配置属性> C / C ++ > 常规> 其他包含目录并添加gtest includes文件夹。
在代码生成> 运行时库下,选择MDt或MTd;任何被测试项目使用的内容
在链接器> 常规> 其他库目录下,使用gtestd.lib添加对该文件夹的引用。
在输入> 附加依赖项下,添加gtestd.lib
右键单击测试项目,转到属性,然后将Configuration设置为release,然后执行步骤3和4
在链接器> 常规> 其他库目录下,使用gtest.lib添加对该文件夹的引用。
在输入> 附加依赖项下,添加gtest.lib。
这些是我在链接测试项目时所遵循的步骤,如上所述here
右键单击测试项目,转到Build Dependencies > Project Dependencies,然后添加要测试的项目。
转到属性> C / C ++ > 常规> 其他包含目录并包含要测试的项目标题。
在链接器> 输入> 附加依赖项下,输入项目的.lib文件
以下是问题
出于某种原因,测试项目令人惊讶地工作,但仅限于发布模式。尽管设置与测试项目具有相同的设置,但包装器项目在任一模式下都不起作用。我已经看了20个可能的解决方案,还没找到一个。我还在库项目的每个方法前面尝试过 __ declspec(dllexport),但这并不公平。 VS正在和我打交道。
我试过的其他东西
我不想在每次需要测试时更改项目以构建.lib。所以我考虑使用预链接构建事件从项目中创建 .exe 和 .lib ,但它似乎只接受控制台命令而我不能&#39 ;弄清楚如何从我从另一个SO答案得到的控制台命令中连接生成的.lib文件。
以下是包含这些问题的当前.sln文件。网址是绝对的:https://drive.google.com/file/d/0B6r81tGW7hODeXNpR3ROc3hYMWc/view?usp=sharing
我如何简单地创建一个测试项目和包装器项目来启动一个正常项目(在调试和发布模式下都有效)?
答案 0 :(得分:1)
修正:
Project | Properties | General | Configuration type
更改为Static Library
。这就是Release工作的原因,但Debug没有。Project | Add reference...
并添加SimpleCalc。这就是SimpleCalcWrapper无法正常工作的原因。Project | Properties | Linker | Advanced | Import Library
或SimpleCalcTest.exe将无法编译。Project | Properties | C/C++ | Additional Include Directories
更改为$(SolutionDir)\gtest\include;$(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories)
。这将使他们相对于项目。Project | Properties | Linker | Additional Library Directories
更改为$(SolutionDir)\gtest;%(AdditionalLibraryDirectories)
- 您不需要SimpleCalc目录,因为该项目已添加到参考中。Project | Properties | C/C++ | Additional Include Directories
更改为$(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories)
Project | Properties | Linker | Additional Library Directories
- 您不需要SimpleCalc目录,因为该项目已添加到引用中。