簡體   English   中英

無法在 VS2017 中包含 Rapidjson 庫

[英]Unable to include rapidjson library in VS2017

我正在嘗試將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信息:

微軟 Visual Studio 社區 2017

版本 15.6.3

如果您知道在 Visual Studio 中使用rapidjson的正確方法,請告訴我。

編輯 :

Rapidjson 文檔建議我們“只需將include/rapidjson文件夾復制到系統或項目的包含路徑”

看起來包含路徑應​​該只是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 功能,或右鍵單擊該項目並從選項菜單中選擇 Properties。 這將顯示“屬性”對話框。

  3. 在對話框左側的列表中選擇 C/C++ General。

  4. 現在在對話框的右側,第一行應該是“Additional Include Directories”。 編輯該行,在列表末尾添加C:/ThirdParty/rapidjson/include

在花了一些時間試圖弄清楚為什么它不包括外部庫之后,我終於找到了我的解決方案。

當我將路徑添加到我的additional include directories ,我是在以下配置下進行的:

配置:調試

平台:x64。

但是,在我的VS2017中,每次新建項目時,編譯/運行設置的默認配置如下:

配置:調試

平台:x86

我的問題背后的主要原因是配置項目和編譯項目之間的平台不匹配。 所以,我想在這種情況下檢查平台和配置是否相同總是更好。

附加信息:(關於這個問題的評論和其他答案)

包含的目錄是rapidjson-master\\include\\rapidjson還是rapidjson-master\\include\\ 在前者中,我們將文件包含為#include "document.h" ,在后者中將包含#include "rapidjson/document.h"

對於那些仍然有這個問題的人,經過一段時間的調試,我意識到發生錯誤的原因是在遠程項目目錄中找不到該文件 - 即使它存在並且正確包含在本地 Windows 項目中.

為了使用第 3 方頭文件正確編譯遠程項目,必須從您的 Windows 目錄中復制它們。

我解決了這樣的問題:

  • 首先,我在解決方案資源管理器窗口中將rapidjson 頭文件添加到我的項目中。 似乎它們必須明確包含在那里,以便 Visual Studio 將文件復制到遠程項目目錄。 為了維護 Rapidjson 包含目錄的目錄結構,我在相應的“過濾器”(文件夾圖標)中添加了標題 - 請參見下面的屏幕截圖(由於它是公司項目,因此項目名稱已被審查):

VS 解決方案資源管理器 Rapidjson

  • 然后,我將#include 語句的編寫方式從#include "rapidjson\\document.h"更改為"rapidjson/document.h" (即使用Linux 文件路徑語法)。

  • 最后,我重建了項目。 它成功地將頭文件復制到遠程項目,我的源文件現在可以“找到”它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM