簡體   English   中英

如何在C ++ Windows中包含第三方庫?

[英]How to include third party libraries in C++ windows?

我的下載文件夾中有Boost庫。 當我嘗試包含特定文件時。 它拋出錯誤。 下面是我執行的代碼和步驟。

\\ main.cpp中

#include "type_index.hpp"

int main(){
//some code
return 0;
}

我打開命令提示符並運行以下命令

g++ -IC:\Users\Owner\Downloads\boost_1_70_0\boost -o main main.cpp

我在命令提示符下出現以下錯誤

In file included from main.cpp:2:0:
C:\Users\Owner\Downloads\boost_1_70_0\boost/type_index.hpp:17:28: fatal error: boost/config.hpp: No such file or directory
 #include <boost/config.hpp>
                            ^
compilation terminated.

如何運行以上文件? 我是否必須將boost目錄的位置從downloads文件夾更改為mingw目錄中的某些位置?

添加目錄圖片: 在此處輸入圖片說明

假設在系統上正確配置了boost並在其上構建了boost包含root的集線器所在的位置。 例如:如果您在c:\\Stuff\\boost_1_70_0下載並構建了boost,則在該文件夾中將是boost包含集c:\\Stuff\\boost_1_70_0\\boost ,並且其中包含所有boost頭。

通過修改包含路徑以提供對boost包含中心的訪問來引用boost; 提供訪問輪轂上的最上面的頭。 與openssl相似,boost前言的所有標頭都包含在自己標頭中,帶有boost/ boost的使用者應該這樣做,因此,include路徑必須包含可以找到boost/ hub的文件夾。 應該包括boost/輪轂本身作為路徑的一部分。

例如:這是正確的

g++ -Ic:\Stuff\boost_1_70_0 -o main main.cpp

另一方面,這是錯誤的:

g++ -Ic:\Stuff\boost_1_70_0\boost -o main main.cpp

對於前者,當代碼包括:

#include <boost/asio.hpp>

搜索include路徑,並找到文件。 此外,在該標頭中,當編譯器看到以下內容時:

#include <boost/asio/associated_allocator.hpp>

它仍然可以正確解析,因為將“內容”放在包含路徑中一個文件夾的末尾是可行的。

現在,考慮錯誤的情況。 如果您將include路徑配置為意外指定boost/ root hub本身會發生什么? 好了,現在可以執行以下操作:

#include <asio.hpp>

但是,一旦預處理器在該標頭上啟動,它將看到:

#include <boost/asio/associated_allocator.hpp>

嗯.. 預處理程序將尋找並永遠找不到它

摘要

在源代碼中使用boost標頭時,始終將其與boost hub序言一起使用:

#include <boost/headername.hpp>

並始終在構建配置中包含boost/ hub所在的文件夾,作為修改后的include路徑; 沒有完整的路徑,包括boost/集線器。

暫無
暫無

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

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