回覆列表
  • 1 # 使用者5198606283124

    是這樣的,.lib是靜態庫檔案,是原始碼.cpp檔案編譯出的目標檔案, .cpp檔案是原始檔.如你所說,.lib檔案具有一定的"保密"特性,因為它為不是原始檔,你"無法"看到它的實現細節.同時由於是編譯好的檔案,在你的工程中如果引用了它,那麼編譯的時候對這部分就不用單獨編譯,只需要連結就行了.這樣會節省很多時間.比如你現在在做一個工程,其中有一個模組是將兩個數相加,於是我寫了個模組,其中包含一個叫add的函式供你引用.在之後的開發中你要反覆修改程式碼然後編譯出新的可執行檔案.而add模組的程式碼你並沒有修改過,不用每次都編譯它.於是你可以引用add模組編譯出的.lib(在linux中一般是.o)檔案,這樣就不用反覆編譯,只需要在連結的時候連結上它就ok.對於這樣的子模組,通常都會編譯出目標檔案(.lib .o)使用,而不是直接使用原始碼,因為那樣會增大編譯成本.事實上像opencv這種庫,既提供目標檔案又提供原始檔.當你只想使用庫函式的時候就直接使用目標檔案再include標頭檔案就行了.當你覺得庫函式不好用想自己修改它的功能的時候,你可以修改原始碼重新編譯出新的目標檔案.如果只在windows下使用vs,我感覺很難了解到這些知識,我也是在linux下安裝了很多次開源庫之後才明白這些東西的.

  • 中秋節和大豐收的關聯?
  • 伊朗議長拉里賈尼說,美國讓伊朗石油出口為零已經失敗,日出口150桶,哪國買的?