它没有记录在网站上,人们似乎在设置框架时遇到问题。有人可以显示示例项目设置的分步介绍吗?
Answers:
Arlaharen所说的基本上是正确的,只是他省略了解释您的链接器错误的部分。首先,您需要在没有CRT的情况下将应用程序构建为运行时库。无论如何,您始终应该这样做,因为它确实简化了应用程序的分发。如果您不这样做,那么所有用户都需要安装Visual C ++运行时库,而那些没有这样做的用户将抱怨系统上缺少神秘的DLL……这需要花几百千字节来链接静态地使用CRT,在以后的支持中您省去了很多麻烦(相信我,这是我的硬方法!)。
无论如何,要执行此操作,请转至目标的属性-> C / C ++->代码生成->运行时库,对于您的Release版本,需要将其设置为“多线程”,对于目标版本,则需要将其设置为“多线程调试”您的调试版本。
由于gtest库是以相同的方式构建的,因此您需要确保链接到它的正确版本,否则链接器将提取运行时库的另一个副本,这就是您看到的错误(顺便说一句,如果您使用的是MFC,则不会有任何区别)。您需要将gtest构建为Debug和Release模式,并保留两个副本。然后,在Release版本中链接gtest.lib / gtest_main.lib,在Debug版本中链接gtestd.lib / gtest_maind.lib。
另外,您需要确保您的应用程序指向存储gtest头文件的目录(在属性-> C / C ++->常规->其他包含目录中),但是如果遇到链接器错误,我认为您已经设法使这一部分正确,否则首先会有更多编译器错误需要处理。
(这些说明使测试框架适用于Debug配置。将相同的过程应用于Release配置应该非常简单。)
获取Google C ++测试框架
C:\gtest
建立框架库
C:\gtest\msvc\gtest.sln
在Visual Studio中创建和配置您的测试项目
C:\gtest\include
C:\gtest\msvc\gtest\Debug
或C:\gtest\msvc\gtest-md\Debug
,具体取决于gtestd.lib的位置gtestd.lib
验证一切正常
main()
功能的“测试项目”中打开cpp 。粘贴以下代码:
#include "stdafx.h"
#include <iostream>
#include "gtest/gtest.h"
TEST(sample_test_case, sample_test)
{
EXPECT_EQ(1, 1);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
std::getchar(); // keep console window open until Return keystroke
}
调试>开始调试
如果一切正常,您应该看到控制台窗口出现,并向您显示单元测试结果。
我制作了有关该设置的视频教程:http : //www.youtube.com/watch?v=mzSzwQOmMRs
构建了gtest之后,这就是我所做的:
之后,我只需要使用TEST或TEST_F编写测试,然后将其与主函数一起编译:
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
gtest_main.lib
包含默认main
函数,因此如果您main
明确编写自己的函数,则可能不希望包含它。
在Microsoft Visual Studio中,配置错误的运行时库类型会导致链接错误。
VS 2005(和2008)默认使用多线程DLL或多线程调试DLL。但是Google Test库默认使用Mulithreaded或Mulithreaded调试运行时。
因此,为Google测试库选择适当的运行时库类型。(在配置属性->代码生成->运行时库中)。
许多错误,需要一段时间才能解决。
简单的步骤如下:
#从以下网址下载Googletest ZIP文件:https://github.com/google/googletest
#Googletest Visual Studio解决方案
Open C:\googletest\googletest\msvc\2010\gtest.sln
Change "Solution configuration"
from "Debug" to "Release"
Build Solution
creates gtest.lib
#您的项目:
Project Properties > Configuration Properties > VC++ Directories > Include Directories
append the following: ;C:\googletest\googletest\include
Project Properties > Configuration Properties > Linker > General > Additional Library Directories >
append the following: ;C:\googletest\googletest\msvc\2010\gtest\Win32-Release
Project Properties > Configuration Properties > C/C++ > Runtime Library
Remove the value of the above. (or match it to Googletest project)