VS中引用第三方庫的方法(配置sqlite資料庫)
我們在編寫程式時,,不可避免的會使用第三方的庫檔案,很少使用原始檔(.cpp),大部分是使用對類進行宣告的標頭檔案和封裝了類的連結庫(靜態lib或動態dll),比如我們寫程式用的iostream這個庫,當然這個是已經設定好的官方的庫,讓我們使用某個第三方的庫時,需要自己來進行配置。
C++的庫會把函式、類的宣告放在*.h中,實現放在*.cpp或*.cc中。編譯之後,*.cpp,*.cc,*.c會被打包成一個.lib檔案,這樣可以保護原始碼。
所以,要使用一個庫,除了要include他的標頭檔案以外,還要在連結過程中把lib加進去。
有兩種方法解決這個問題。
主要有兩種辦法:
第一種:我們可以將我們所需要的庫檔案(.lib),已經該標頭檔案(.h)拷貝到我們程式的目錄下,其實只要拷貝到程式目錄下即可,因為編譯時,編譯器會自動會在專案所在的檔案裡逐個搜素,若我們使用的庫檔案存在動態連結檔案時,一般我們把它拷貝到我們程式可執行檔案所存在的檔案中,這樣我們就可以在我們的程式中使用。
但是有個缺點,假若我們需要使用的庫檔案太多,這樣拷貝會比較麻煩,效率比較低。我們可以使用第二種方法。
第二種:我們可以在我們的程式中載入我們所需要的庫檔案,從而不需要拷貝到自己程式的目錄下。我們以一個例子來說明,我現在要在程式中引用sqlite資料庫的API函式
舉例:
新建專案:zrl(隨便起的),這裡僅僅是演示,所以我們新建一個空工程,執行一下(產生可執行檔案)
1 新增檔案引用的lib靜態庫路徑:工程---屬性---配置屬性---連結器---常規---附加庫目錄:加上lib檔案存放目錄。(注意:這個檔案的存放目錄指的是你的庫檔案所放的最後一級的目錄,一定不要帶上你的檔名,這裡僅僅指的是存放”庫檔案所在檔案目錄”,下同)
2 然後新增工程引用的lib檔名:工程---屬性---配置屬性---連結器---輸入---附加依賴項:加上lib檔名,這個步驟等同於在程式中新增 #pragma comment(lib, “xxx.lib”)
3新增工程的標頭檔案目錄:工程---屬性---配置屬性---c/c++---常規---附加包含目錄:加上標頭檔案存放目錄。 此例子中:
4新增工程引用的dll動態庫:把引用的dll放到工程的可執行檔案所在的目錄下。
或者我們也可以不新增附加庫目錄,附加包含目錄這兩個,我們也可以在 工程---屬性---配置屬性---VC++屬性—包含目錄 新增 標頭檔案所在的檔案目錄。
在工程---屬性---配置屬性---VC++屬性—庫目錄 新增庫目錄所在的檔案目錄。但此時仍要設定附加依賴項(和上面一樣)。
同時總結一下在引用第三方庫時所出現問題:
1若附加連結庫中設定錯誤(拼寫錯誤等),或者既沒有新增也沒有使用#pragmacomment(lib,"xxx.lib") 來設定
這個過程出錯會出現link error,大概是“未定義的函式XXX”。
2庫目錄錯誤:就是尋找.lib檔案的目錄。如果設定錯誤,會link error,提示"找不到XXX.lib"。
這樣設定完後,我們就可以是使用我們所新增的庫的函數了。