C++ 包含目录、库目录、附加依赖项详解
在使用opencv庫,以及其他庫的時候,經常會需要添加包含目錄、庫目錄、附加依賴項等。現做一個總結吧。
1、包含目錄
是.h的頭文件所在的目錄,如果沒有正確包含目錄,代碼中會出現紅色的警告,各種未定義的標識符。
添加庫目錄的絕對路徑自然不必多說。
講下添加相對路徑的一個小技巧:..\..\include ????每一次 ?..\ ?都會向上移動一個目錄,暫且認為最原始的目錄為(.vcproj) 目錄,或者生成exe文件所在目錄
2、庫目錄
為各種.lib文件所在的目錄,lib文件僅在vs編譯時需要。
如果沒有正確包含庫目錄,編譯器會報錯,提示無法找到.lib文件。
添加庫目錄的小技巧:$(SolutionDir)表示.sln文件所在的目錄,$(ProjectDir)表示 .vcproj所在目錄。示例:$(SolutionDir)\Debug
3、附加依賴項
附加依賴項為vs編譯時,所需.lib文件的名稱。與庫目錄相對應。
如果沒有正確包含附加依賴項,會出現,無法解析的外部符號等錯誤。
4、.dll文件
.dll文件是運行時需要的執行文件,當編譯之后,僅需要dll即可,一般情況下與.exe在同一目錄即可。
5、C++預處理器定義
C/C++ ->預處理器 ->預處理器定義
VC包含目錄、附加依賴項、庫目錄及具體設置
包含目錄:#include <headerfile.h>中headerfile.h的搜索目錄。
如果有XXX.h找不到,設置這個目錄可以解決。
附加依賴項:C++的庫會把函數、類的聲明放在*.h中,實現放在*.cpp或*.cc中。編譯之后,*.cpp,*.cc,*.c會被打包成一個.lib文件,這樣可以保護源代碼。
所以,要使用一個庫,除了要include他的頭文件以外,還要在鏈接過程中把lib加進去。這個就是在附加鏈接庫中設置。
其實,一般的庫會用#pragma comment(lib,"xxx.lib") 來設置
這個過程出錯會出現link error,大概是“未定義的函數XXX”。
庫目錄:就是尋找.lib文件的目錄。
如果設置錯誤,會link error,提示"找不到XXX.lib"。
在VS工程中,添加c/c++工程中外部頭文件及庫的基本步驟:
??? 1、添加工程的頭文件目錄:工程---屬性---配置屬性---c/c++---常規---附加包含目錄:加上頭文件存放目錄。
??? 2、添加文件引用的lib靜態庫路徑:工程---屬性---配置屬性---鏈接器---常規---附加庫目錄:加上lib文件存放目錄。
???????? 然后添加工程引用的lib文件名:工程---屬性---配置屬性---鏈接器---輸入---附加依賴項:加上lib文件名。
??? 3、添加工程引用的dll動態庫:把引用的dll放到工程的可執行文件所在的目錄下。
MFC中添加"附加包含目錄"、“附加包含目錄”以及“附加庫目錄”
1.附加包含目錄
方法:
(1)[解決方案資源管理器]:右鍵項目->屬性->配置屬性->C/C++->常規->附加包含目錄;
(2)[菜單]:工具->選項->項目和解決方案->C++目錄,選擇對應平臺,然后添加所需“包括文件”目錄;
功能:添加的是項目中用到的include頭文件,把外部依賴庫的頭文件地址添加在這里。
2.附加庫目錄
方法:
(1)[解決方案資源管理器]:右鍵項目->屬性->配置屬性->鏈接器>常規->附加庫目錄;
(2)[菜單]:工具->選項->項目和解決方案->C++目錄,選擇對應平臺,然后添加所需“庫文件”目錄;
功能:將外部依賴庫的lib文件地址添加在這里;
2.附加依賴目錄
方法:
(1)[解決方案資源管理器]:右鍵項目->屬性->配置屬性->鏈接器>輸入->附加依賴項,在其中填寫具體使用到的具體的lib名稱,包含后綴名如"opencv_world300d.lib"。效果等同于
(2)[菜單]:工具->選項->項目和解決方案->C++目錄,選擇對應平臺,然后添加所需“庫文件”目錄;
功能:將使用到的外部依賴庫的lib文件名稱添加在這里;
例:
opencv配置
假設opencv解壓在D盤opencv文件中
(1)添加附加包含目錄: D:\opencv\build\include;
(2)附加庫目錄: D:\opencv\build\x86\vc12\lib;(這里我的項目目標計算機是x86,故選x86)
注:項目目標計算機查看與設值方法:
(a)右鍵項目–>屬性–>鏈接器–>高級–>目標計算機;
(b)右鍵項目–>配置管理器”–>活動平臺解決方案;
(3)添加外部依賴項: opencv_world300d.lib;
注:lib文件夾里有opencv_world300d.lib,opencv_ts300d.lib,opencv_world300.lib,opencv_ts300.lib四個文件,前兩個帶"d"表示debug版本,后兩個表示release版本,根據需求添加。
(4)復制opencv_world300d.dll放在項目debug文件夾中。
Eigen配置
僅添加附加包含目錄即可:D:\eigen-eigen-07105f7124f9\Eigen
總結
以上是生活随笔為你收集整理的C++ 包含目录、库目录、附加依赖项详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QTCreator使用MSVC编译开发配
- 下一篇: s3c2440移植MQTT