当前位置: 首页 > 知识库问答 >
问题:

如何在Visual Studio 2013中编译和链接C项目中的谷歌测试,但使用NuGet Package Manager安装的Gtest?

云星波
2023-03-14

我在Windows 7上有Microsoft Visual Studio 2013社区版。我想以比下载标头和二进制文件或自己编译更快的方式安装gtest和gmock for C。

我找到了工具

#include <iostream>
#include <gtest\gtest.h>

using namespace std;
using namespace ::testing;

int factorian(int n)
{
    if (n == 0 || n == 1)
        return 1;
    else
        return n*factorian(n - 1);
}

TEST(factorianTest, simpleTest)
{
    ASSERT_EQ(1, factorian(0));
    ASSERT_EQ(1, factorian(1));
    ASSERT_EQ(2, factorian(2));
}

int main(int argc, char* argv[])
{
    InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

但它没有链接:

错误1错误LNK2019:未解析的外部符号“bool \uU cdecl测试::内部::IsTrue(bool)”(?IsTrue@internal@测试@是\N_N@Z)在html" target="_blank">函数“public:void \uu thiscall testing::internal::scoped\u ptr,class std::allocator”中引用

所以我打开了:项目属性

错误1错误LNK1104:无法打开文件gtest.libc:\用户\Grzegorz\文档\Visual Studio 2013\Projects\tmp\tmp\LINK tmp

当我将完整路径添加到文件时(我知道我不应该)有奇怪的错误:

错误2错误LNK2005:“public:\u thiscall std:\u Container\u base12::\u Container\u base12(void)”(?0\u Container_base12@std@@QAE@XZ)已在gtestd中定义。lib(gtest all.obj)c:\Users\Grzegorz\documents\visual studio

2013年\Projects\tmp\tmp\msvcprtd。lib(MSVCP120D.dll)tmp

所以我的问题是,如何在Visual Studio 2013的C项目中编译和链接google测试,但要使用NuGet Package Manager安装的Gtest?

共有2个答案

费明诚
2023-03-14

我找到了一个解决方案:当我在nuget包管理器中键入gtest以查找包时,我发现了多个包:

  1. 谷歌测试
  2. FIX8 GTest相关性符号
  3. FIX8 GTest依赖项

所以我也安装了FIX8 GTest依赖项。链接错误消失了。

壤驷凯
2023-03-14

Google Test NuGet包包含仅用于静态链接的预构建库,但包链接选项的默认初始值设定项为“动态”。

Project properties 
-> Configuration properties 
-> Referenced packages 
-> gtest 
-> Linkage: set to "Static"

不要手动添加gtest.lib。

 类似资料:
  • 从这里引用:https://www.ampproject.org/docs/get_started/about-amp.html AMP是一种为快速呈现的静态内容构建网页的方法。运行中的放大器由三个不同部分组成: AMP超文本标记语言 AMP JS AMP CDN AMP HTML是一种HTML,它对可靠的性能有一些限制,并对在基本HTML之外构建丰富内容有一些扩展。AMP JS库确保AMP HT

  • 实际上,这将是一个更复杂的问题。我只想在测试中使用AspectJ。找到了使用if()连接点和一些静态布尔字段的建议。此外,首先我开始使用aspect作为我的基本测试方法的内部静态类。经过一些实验,我把它换成了自己的班级,但实际上并没有得到我想要的结果。所以,我只是创建了一些测试项目。Maven pom。xml: 类别:A: B: 测试类: Aspect类 主要类别: 运行测试和主要方法后我得到了结

  • 根据前面的问题,我创建了一个静态编程语言Gradle项目。我向其中添加了两个源文件: 我还将目录src标记为源根,将测试标记为测试源根。 如果我在别处创建与这些源文件完全相同的目录结构,并围绕它创建一个非渐变IntelliJ项目,我就能够编译和运行这些代码,包括测试。 然而,在我的Gradle版本的项目中,我无法从IntelliJ IDEA构建测试。我发现以下错误: 奇怪的是,如果我在构建包装器后

  • 在NetBeans 7.2中,我很难找到如何在Maven项目中使用-Xlint:unchecked进行编译。在Ant项目下,可以通过转到项目属性来更改编译器标志- 有没有办法使用Maven将IDE配置为使用此类标志进行编译?

  • 问题内容: 我有一个Java项目,我想开发它而不替换源代码。我想将代码链接到我的工作空间而不进行物理替换吗? 问题答案: 从中选择您要引用的 右键单击并转到(或按Ctrl-Enter)。 在中,您可以添加当前打开的另一个项目。 如果您要覆盖某个类,则可以在当前项目中对其进行复制,然后将其移至中的类路径中。

  • 问题内容: 如标题所示,我似乎无法使用OpenGL和Glut构建项目。 我收到OpenGL函数的未定义参考错误。 我试着做: 但这是行不通的。 有什么建议么? 问题答案: 会为您找到软件包,但不会将软件包链接到目标。 要链接到库,可以使用。此外,您还需要设置,以便链接器知道在哪里寻找东西。这是通过完成的。 一个执行此操作的示例如下所示: 如果对于您的项目是必要的,则可以考虑在之后进行测试,或使用,