Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在visual studio 2019上设置gmock的问题_C++_Visual Studio 2019_Googlemock - Fatal编程技术网

C++ 在visual studio 2019上设置gmock的问题

C++ 在visual studio 2019上设置gmock的问题,c++,visual-studio-2019,googlemock,C++,Visual Studio 2019,Googlemock,我正在尝试在VisualStudio2019上设置gmock。 在这里,我用源代码(Gmock_项目)将我的项目配置为一个静态库。我已经将运行库制作成多线程DLL(/MD)。我也没有使用任何预编译头。 然后,对于单元测试项目,我已经完成了以下属性 1) 从Google测试模板(Gmock_示例)创建了一个新项目 2) 安装了来自Google的最新gmock NuGet软件包(目前为v1.10.0) 3) 将文件gtest_main.cc添加到项目中 4) 我已经禁用了gtest_main.cc

我正在尝试在VisualStudio2019上设置gmock。

在这里,我用源代码(Gmock_项目)将我的项目配置为一个静态库。我已经将运行库制作成多线程DLL(/MD)。我也没有使用任何预编译头。 然后,对于单元测试项目,我已经完成了以下属性

1) 从Google测试模板(Gmock_示例)创建了一个新项目

2) 安装了来自Google的最新gmock NuGet软件包(目前为v1.10.0)

3) 将文件gtest_main.cc添加到项目中

4) 我已经禁用了gtest_main.cc、gmock-all.cc和gtest-all.cc的预编译头

5) 我已经在测试项目中添加了Gmock_项目的引用

6) 我已经在VC++目录->包含目录中包含了Gmock_项目的路径

7) 我已将运行时库设置为多线程DLL(/MD)

8) 我已经在Linker->General->Additional Library目录中添加了Gmock_project.lib的路径

9) 我已经在Linker->Input->Additional Dependencies中包含了Gmock_project.lib

每当我构建Gmock_样本,即测试项目时,我都会遇到错误

2>test.obj:错误LNK2005:main已在gtest_main.obj中定义
2> E:\GMock\GMock\u Sample\GMock\u Sample\x64\Release\GMock\u Sample.exe:致命错误LNK1169:找到一个或多个多重定义符号
2> 完成构建项目“Gmock_Sample.vcxproj”--失败。
=========全部重建:1成功,1失败,0跳过==========

配置中会出现什么问题?

我今天通过使用googletest存储库为Windows进行CMAKE构建,然后将静态.lib文件和头添加到我的项目中,解决了这个问题

以下是步骤:

1.克隆谷歌测试库->

2.下载适用于Windows的CMAKE。->

3.安装CMAKE,不要忘记创建系统变量,以便从CMD调用它

4.转到克隆存储库文件夹

5.创建一个名为“build”的文件夹

6.在您的解决方案应用程序中创建一个名为“googletest package”->的文件夹.lib文件和标题将在此处导出

  • 在cmd或powershell中运行以下命令:
  • cmake-G“Visual Studio 16 2019”-DCMAKE\u INSTALL\u PREFIX=C:\YourSolutionFolder\googletest软件包

  • 在build文件夹中,您现在可以找到googletest-distribution.sln->双击打开文件

  • 在Visual Studio中,先生成ALL_build项目,然后再生成INSTALL项目,这将把头文件和.lib文件移动到解决方案中的googletest包文件夹中

  • ——第一阶段结束

    对于第二阶段,我们需要执行以下操作,因为我们已经有了头文件和静态库,是时候将它们链接到我们想要测试的项目了

    < P>在您试图测试的解决方案中创建一个新的C++项目。 ->Richt单击解决方案->添加->新项目->谷歌测试->配置为静态库并静态链接

  • 我们需要首先从测试项目中删除自动安装的googletest NU包,以避免与我们自己的googletest版本重复和冲突。 转到->工具->NUGet软件包管理器->管理解决方案的NUGet软件包->卸载Microsoft.googletest.vXXX

  • 现在添加Include文件夹并将.lib文件链接到测试项目,如下所示: ->右键单击测试项目->C/C++选项卡->其他包含文件夹

  • 添加以下内容包括

    “YourSolutionFolder\googletest package\include”

    “YourSolutionFolder\googletest package\include\gmock”

    “YourSolutionFolder\googletest package\include\gtest”

  • 现在是链接器选项卡的时间。。。 ->链接器->常规->其他库目录->添加“YourSolutionFolder\googletest package\lib”

  • 添加.lib对象,如下所示: 链接器->输入->其他依赖项->添加以下内容。。。 “gmockd.lib;gtestd.lib;mock_maind.lib;gtest_maind.lib”

  • 5.在pch.h文件中添加以下行#include“gmock.h”

    您现在应该能够构建所有项目并使用模拟运行测试!
    我希望这会有所帮助,虽然有点长,但我认为它可以自动化。

    我想你在从谷歌安装Microsoft googletest软件包之前删除了该软件包?另外,我不认为8)和9)是必要的。我如何删除Microsoft googletest软件包?因为Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static包基于您在另一篇文章中的回答,我在visual studio中没有看到。每当我创建google测试模板时,我只看到创建了Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn包。是的,在上面的1)中,您正在从google测试模板创建一个新项目。如果不删除其静态nuget包,将出现链接错误。因此,在从Google安装gmock nuget包之前,我应该先删除Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn包。我已尝试了这两种方法在visual studio中配置gmock。但是,当我链接代码时,我得到了与前面提到的相同的错误,尽管我已经删除了Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn包。那么,如何将源代码链接到测试项目呢。