Google测试:错误LNK2019:Visual Studio 2013无法解析的外部符号

索尔蒂

我正在尝试使用Google Test Framework + Visual Studio 2013进行首次单元测试,但是遇到以下错误并且无法理解原因。

1> ------开始构建:项目:FirstGoogleTest,配置:Win32调试------
2> ------开始构建:项目:googleTest,配置:Win32调试------
1> MyMultiplier.cpp
2> gtest_main.cc
1> main.cpp
1>正在生成代码...
2> gtest-all.cc
1> FirstGoogleTest.vcxproj-> D:_Vault \ Workspaces \ UnitTestLearning \ FirstGoogleTest \ Debug \ FirstGoogleTest。 exe
2>正在生成代码...
2> googleTest.vcxproj-> D:_Vault \ Workspaces \ UnitTestLearning \ FirstGoogleTest \ Debug \ googleTest.lib
3> ------构建已开始:项目:MyMultiplier_UnitLevelTest,配置:Debug Win32- -----
3> MyMultiplier_UnitLevelTest.cpp
3> MyMultiplier_UnitLevelTest.obj:错误LNK2019:未解决的外部符号“ public:unsigned int __thiscall
MyMultiplier :: multiply(unsigned int,unsigned int)”(?multiply @ MyMultiplier @@ QAEIII @ Z)在函数“ private:virtual void __thiscall中引用” MyMultiplier_multiplyNormalSmallValues_Test :: TestBody(无效)”(TestBody @ @@ MyMultiplier_multiplyNormalSmallValues_Test EAEXXZ?)
3> d:_Vault \工作区\ UnitTestLearning \ FirstGoogleTest \调试\ MyMultiplier_UnitLevelTest.exe:致命错误LNK1120:1周无法解析的外部
======== ==构建:2成功,1失败,0最新,已跳过0 ==========

解决方案的结构如下:https :
//www.dropbox.com/s/0cu8eqr7pz3ajaz/Untitled.png

ULT项目的“参考”项目包括“ googleTest”和“ FirstGoogleTest”。这是“ MyMultiplier_UnitLevelTest.cpp”

#include "gtest/gtest.h"  // access test macro
#include "MyMultiplier.h"   // testee
#include <iostream>
#include <string>

TEST(MyMultiplier, multiplyNormalSmallValues){
    MyMultiplier m;
    std::string name("MyMultiplier_ULT");
    unsigned int a = 5;
    unsigned int b = 10;
    unsigned int answer = m.multiply(a, b/*, name*/);
    ASSERT_EQ(a * b, answer);

}

MyMultiplier.h中“乘”函数的声明:

class MyMultiplier{
public:
    unsigned int multiply(unsigned int a, unsigned int b/*, std::string& name*/);
};

签名匹配,并且还包含头文件。为什么ult项目找不到符号?

完整的解决方案可以在这里下载:https : //www.dropbox.com/sh/vc89o5ep139wkuk/AAA8Z76q6iAkP25zTmu9bR3ia

索尔蒂

根本原因是项目类型设置不正确。

在此示例中,有三个项目:

  1. FirstGoogleTest,即被测试者。要测试的类位于此处。
  2. googleTest,这是google测试框架
  3. MyMultiplier_UnitLevelTest,这是包含测试的ULT项目。

根本原因是“ FirstGoogleTest”项目的配置类型设置为.exe,与ULT项目相同。因此ult测试无法从“ FirstGoogleTest”获取外部信息。将“ FirstGoogleTest”配置更改静态库(.lib)之后解决方案可以正确编译,并且ULT运行正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何解决错误LNK2019:无法解析的外部符号-功能?

Qt 5.4静态生成在Visual Studio 2013中产生“无法解析的外部符号”链接错误

错误LNK2019:无法解析的外部符号libcurl Visual Studio

错误:LNK 2019:Visual Studio中未解析的外部符号_imp_CrtDbgReportw

LNK2019无法在Visual Studio中链接静态库

LNK2019:C ++ / CLI中无法解析的外部符号

Visual Studio中的wxwidgets应用程序给出错误“ LNK2019无法解析的外部符号”

Visual Studio的LNK2019错误-无法解析的外部符号

错误:LNK2019:Qt中无法解析的外部符号

LNK2019:Visual Studio C ++中无法解决的外部符号错误

错误LNK2019:无法解析的外部符号“ public:

问题:“错误LNK2019:无法解析的外部符号”

错误LNK2019无法解析的外部符号-类库问题?

Visual Studio 2012-C MariaDB客户端-错误LNK2019:无法解析的外部符号_mysql_init @ 4

Visual Studio 2012错误LNK2019:无法解析的外部符号,与正在运行的静态库链接

Visual Studio 2013 dll导出链接错误(LNK2019 / LNK1120)

Visual Studio 2013错误LNK2019

错误LNK2019:无法解析的外部符号:: FindWindow()函数

如何修复LNK2019无法解析的外部符号

Visual Studios C ++代码中的错误。Lab4.obj:错误LNK2019:无法解析的外部符号“布尔__cdecl

编译Curl Visual Studio-无法解析的外部符号

带有OpenCL的Visual Studio 14.0 LNK2001(无法解析的外部符号)

错误LNK2019:无法解析的外部符号_打开CV程序

错误LNK2019:将代码放入cpp文件时出现无法解析的外部符号

错误LNK2019:无法解析的外部符号“ public:__thiscall

错误LNK2019:无法解析的外部符号-功能模板的msvc调试版本

Visual Studio系列如何自己解决LNK2019错误

Visual Studio 2017 LNK2019:GoogleTestGoogleMock 项目中未解析的外部符号

错误 LNK2019:未解析的外部符号静态库