【问题标题】:Unable to include rapidjson library in VS2017无法在 VS2017 中包含 rapidjson 库
【发布时间】:2018-06-11 12:51:18
【问题描述】:

我正在尝试将 rapidjson 库包含在我的 VS 社区 2017 项目中。

在创建新项目时,我尝试在以下位置包含/添加目录rapidjson-master\include\rapidjson

  1. 属性 -> 配置属性 -> C/C++ -> 常规 -> 附加包含目录。

  2. 属性 -> 配置属性 -> VC++ 目录 -> 包含目录。

无论哪种方式,当我尝试包含rapidjson 相关文件时,VS 告诉我它找不到源文件。

所以,当我给出这个时:

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"

我收到以下错误:

错误(活动)E1696 无法打开源文件“rapidjson/document.h”

错误(活动)E1696 无法打开源文件“rapidjson/writer.h”

错误(活动)E1696 无法打开源文件“rapidjson/stringbuffer.h”

VS 信息:

Microsoft Visual Studio 社区 2017

版本 15.6.3

如果您知道在 Visual Studio 中使用 rapidjson 的正确方法,请告诉我。

编辑:

rapidjson documentation 建议我们“只需将include/rapidjson 文件夹复制到系统或项目的包含路径”

【问题讨论】:

  • rapidjson-master\include\rapidjson 中有 document.h 吗?如果是,我相信包含目录应该是rapidjson-master\include
  • document.h 确实在\include\rapidjson 中。
  • 事实上,其他的也存在于上述路径中。
  • @NathanOliver :即使将rapidjson-master\include 添加到包含目录,我也会遇到同样的问题。
  • rapidjson-master\include 添加到包含路径。

标签: c++ visual-studio visual-studio-2017 rapidjson


【解决方案1】:

看起来包含路径应​​该只是rapidjson-master\include,但让我们从头开始。

  1. 克隆rapidjson仓库;在命令窗口中执行以下操作:

    mkdir C:/ThirdParty
    cd C:/ThirdParty
    git clone https://github.com/Tencent/rapidjson.git
    

    用一个方便的目录替换C:/ThirdParty

  2. 在 Visual Studio 中,打开解决方案并在解决方案资源管理器中,选择使用 rapidjson 的项目并使用主菜单 PROJECT 属性功能,或者右键单击该项目并从选项菜单中选择属性。这将显示“属性”对话框。

  3. 在对话框左侧的列表中选择 C/C++ General。

  4. 现在在对话框的右侧,第一行应该是“其他包含目录”。编辑该行,在列表末尾添加C:/ThirdParty/rapidjson/include

【讨论】:

  • 感谢您花时间回答这个问题,但这个问题原来是一个相当粗心的错误。
【解决方案2】:

在花了一些时间试图弄清楚为什么它不包括外部库之后,我终于找到了我的解决方案。

当我将路径添加到我的additional include directories 时,我是在以下配置下进行的:

配置:调试

平台:x64。

但是,在我的VS2017中,每次新建项目时,编译/运行的默认配置如下:

配置:调试

平台:x86

我的问题背后的主要原因是配置项目和编译项目之间的平台不匹配。所以,我想在这种情况下检查平台和配置是否相同总是更好。

附加信息:(关于 cmets 和此问题的其他答案)

包含的目录是rapidjson-master\include\rapidjson 还是rapidjson-master\include\ 都没有关系。在前者中,我们将文件包含为#include "document.h",而在后者中则为#include "rapidjson/document.h"

【讨论】:

    【解决方案3】:

    对于那些仍然有这个问题的人,我在调试一段时间后意识到发生错误的原因是因为在远程项目目录中找不到该文件 - 即使它存在并且正确包含在您的本地 Windows 项目。

    为了使用第 3 方标头正确编译远程项目,必须从您的 Windows 目录中复制它们。

    我解决了这样的问题:

    • 首先,我在 Solution Explorer 窗口中将 rapidjson 头文件添加到我的项目中。似乎必须将它们明确包含在其中,以便 Visual Studio 将文件复制到您的远程项目目录。为了维护 rapidjson 包含目录的目录结构,我在其适当的“过滤器”(文件夹图标)中添加了标题 - 请参见下面的屏幕截图(项目名称因公司项目而被审查):

    • 然后,我将编写#include 语句的方式从#include "rapidjson\document.h" 更改为"rapidjson/document.h"(即使用Linux 文件路径语法)。

    • 最后,我重建了项目。它成功地将头文件复制到远程项目中,我的源文件现在可以“找到”它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 2018-06-28
      • 2019-01-09
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多