[英]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.