1 靜態庫和動態鏈接庫的區別
動態鏈接庫是在運行的時候被調用的,靜態庫在鏈接的時候被鏈接到最終生成的應用程序(.exe)中
靜態庫需要用到的文件 (.lib .h)
頭文件(.h)提供接口,庫文件(.lib)提供實現
動態鏈接庫需要用到的文件 (.dll .lib .h)
頭文件(.h)提供接口,庫文件(.lib)僅提供索引,動態鏈接庫文件(.dll)提供實現
2 尖括號<>和雙引號""引用.h文件的區別
尖括號<>會從VC++包含目錄中尋找.h文件,一般是用於調用第三方庫雙引號""會從項目配置屬性中c/c++的附加包含目錄尋找.h文件,一般是用於尋找工程內的.h文件
目錄
Visual Studio項目環境配置
一. 靜態庫環境配置
1.1 添加靜態庫對應的頭文件所在目錄
1.1.1 使用尖括號<>引用頭文件的配置
右鍵項目->屬性->配置屬性->VC++目錄
點擊包含目錄,點擊右邊的下拉箭頭,點擊編輯,添加新的項,手動輸入附加庫頭文件的路徑
點擊確定保存,這樣就能保證我們能用<>引用我們想要使用的庫的頭文件了
1.1.2 使用雙引號引用頭文件的配置
要使用雙引號""引用項目中的頭文件的話,在配置屬性->c/c++->附加包含目錄中添加頭文件所在路徑即可
確定,完成配置
1.2 添加靜態庫所在目錄
和添加包含目錄同理,點擊庫目錄,點擊右邊的下拉箭頭,編輯,添加靜態庫所在目錄
也可以在配置屬性->鏈接器->常規->附加庫目錄中添加庫所在路徑
1.3 添加附加依賴項
右鍵項目->屬性->配置屬性->鏈接器->附加依賴項->編輯添加依賴的lib文件名
到此位置lib的配置就結束了
1.4 測試以及常見錯誤
- 試着引用一下glfw庫,沒有出現紅線說明我們的頭文件包含目錄沒問題了
- 跑一下程序,如果出現LNK1104,說明庫目錄出了問題
- 出現LNK2019 無法解析的外部符號XXXXX,該符號在函數XXX被引用
這種情況就是沒有添加附加依賴項導致的
總結一下配置靜態庫可能會出現的問題
-
預處理錯誤,未找到頭文件
解決方式:在VC++目錄或者c/c++的附加目錄中添加頭文件所在目錄 -
鏈接錯誤,LNK1104,無法找到庫文件
解決方式:在VC++目錄或者鏈接器的附加庫目錄添加庫所在的目錄 -
鏈接錯誤,LNK1120,LNK2019, 無法解析的外部符號
解決方式:在鏈接器中添加附加依賴項
二. 動態鏈接庫環境配置
動態鏈接庫可以在運行時被使用,調用動態庫需要用到 .dll .lib .h三個文件,**其中.lib和.h文件的配置方式和靜態庫一樣**,就不重新說一次了2.1 設置.dll的環境
關鍵的一步是在項目的調試環境中添加.dll文件所在路徑 右鍵項目->配置屬性->調試->環境->編輯
輸入PATH=附加庫的路徑1;附加庫的路徑2;附加庫的路徑3;…
每個路徑用分號隔開
點擊確定,保存
梳理一下動態鏈接庫環境配置的流程