VS中使用第三方庫原理(配置sqlite資料庫)

來源:互聯網
上載者:User

標籤:

我們在編寫程式時,,不可避免的會使用第三方的庫檔案,很少使用源檔案(.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"。

 

這樣設定完後,我們就可以是使用我們所添加的庫的函數了。


 

 

VS中使用第三方庫原理(配置sqlite資料庫)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.