无法在VS2017中包含rapidjson库

时间:2018-06-11 12:51:19

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

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

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

  1. 属性 - >配置属性 - > C / C ++ - >一般 - >其他包含目录。

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

  3. 无论哪种方式,当我尝试包含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 Community 2017

         

    版本15.6.3

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

    编辑:

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

3 个答案:

答案 0 :(得分:0)

看起来包含路径应​​该只是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 Properties功能,或右键单击项目并从选项菜单中选择“属性”。这将显示“属性”对话框。

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

  4. 现在在对话框的右侧,第一行应为“Additional Include Directories”。编辑该行,在列表末尾添加C:/ThirdParty/rapidjson/include

答案 1 :(得分:0)

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

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

  

配置:调试

     

平台:x64。

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

  

配置:调试

     

平台:x86

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

其他信息:(关于此问题的评论和其他答案)

如果包含的目录是rapidjson-master\include\rapidjsonrapidjson-master\include\,则无关紧要。在前者中,我们将文件包含为#include "document.h",后者则为#include "rapidjson/document.h"

答案 2 :(得分:0)

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

为了使远程项目能够使用第三方标头正确编译,必须将其从Windows目录中复制过来。

我解决了这样的问题:

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

VS Solution Explorer rapidjson

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

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