我是谷歌测试框架的新手。这是我的第一个谷歌测试测试项目。我做了像这个网站http://www.bogotobogo.com/cplusplus/google_unit_test_gtest.php这样的配置 但是我在途中更改了.cpp文件。现在出现了上面的链接错误。
我的输出如下
1> ------ Rebuild All started:Project:GoogleTest,Configuration:Debug Win32 ------ 2> ------ Rebuild All started:Project:SimpleMath,Configuration:Debug Win32 - ----- 1> gtest_main.cc 2> SimpleMath.cpp 2> SimpleMath.vcxproj - > D:\ My Document \ cpp \ GoogleTest \ Debug \ SimpleMath.exe 1> gtest-all.cc 1>生成代码... 1> LINK:警告LNK4068:/ MACHINE未指定;默认为X86 1> GoogleTest.vcxproj - > D:\ My Document \ cpp \ GoogleTest \ Debug \ GoogleTest.lib 3> ------ Rebuild All started:Project:unittest_cube,Configuration:Debug Win32 ------ 3> unittest_cube.cpp 3> stdafx.cpp 3>生成代码... 3> unittest_cube.obj:错误LNK2019:未解析的外部符号" public:double __thiscall Cube :: cubic(double)" (?cubic @ Cube @@ QAENN @ Z)在函数" private中引用:virtual void __thiscall testMath_myCubeTest_Test :: TestBody(void)" (?TestBody @ testMath_myCubeTest_Test @@ EAEXXZ)3> D:\ My Document \ cpp \ GoogleTest \ Debug \ unittest_cube.exe:致命错误LNK1120:1未解析的外部 ==========重建全部:2成功,1失败,0跳过==========
如何修复此链接错误。提前谢谢。
我的unittest_cube.cpp文件(在测试项目中)如下
#include "gtest/gtest.h"
#include "simplemath.h"
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
TEST(testMath, myCubeTest)
{
Cube c;
EXPECT_EQ(1000.0, c.cubic(10));
//EXPECT_TRUE(c.cubic(2) == 8);
//ASSERT_EQ(1000.0, c.cubic(10));
}`
我的SimpleMath.cpp就像
#include "simplemath.h"
#include <iostream>
using namespace std;
int main()
{
Cube c;
double num= c.cubic(10);
//cout << num;
//getchar();
return 0;
}
double Cube::cubic(double d)
{
return pow(d, 3);
}
我的simplemath.h文件就像
#include <cmath>
class Cube{
public:
double cubic(double i);
};
答案 0 :(得分:1)
这里有两个问题:
SimpleMath.cpp
测试(您的输出表明您使用的是Visual Studio)。为此,请右键单击&#34; Source Files&#34;在解决方案资源管理器中筛选项目,选择&#34;现有项目...&#34;,然后添加文件SimpleMath.cpp
。这应解决第一个问题。main
函数。这意味着在正确添加文件SimpleMath.cpp
后,您将收到另一个链接器错误。删除或注释掉SimpleMath.cpp
中的主要功能,以便成功构建代码。