visual studio 2013错误LNK1120:1个未解析的外部和错误LNK2019:未解析的外部符号

时间:2016-02-02 05:00:46

标签: c++ visual-studio-2013 googletest

我是谷歌测试框架的新手。这是我的第一个谷歌测试测试项目。我做了像这个网站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);
};

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

  1. 首先,您确实在VS项目中添加了SimpleMath.cpp测试(您的输出表明您使用的是Visual Studio)。为此,请右键单击&#34; Source Files&#34;在解决方案资源管理器中筛选项目,选择&#34;现有项目...&#34;,然后添加文件SimpleMath.cpp。这应解决第一个问题。
  2. 第二个问题是你有两个main函数。这意味着在正确添加文件SimpleMath.cpp后,您将收到另一个链接器错误。删除或注释掉SimpleMath.cpp中的主要功能,以便成功构建代码。