一文梳理vs2017中lib的使用

2021-10-23 03:16:33 字數 1386 閱讀 8617

windows下有靜態鏈結庫(lib)和動態鏈結庫(dll)兩種共享**的方式。

本文將介紹lib的應用場景,以及在vs2017平台下的生成和使用。

[how] 如何呼叫lib

[why] lib的優缺點

[github] **

[reference] 參考

通常所說的lib是指靜態鏈結庫(static link library),其中包含**實現,lib實際上是obj檔案的集合(obj檔案由cpp檔案編譯生成),lib可以看作是乙個殼子,obj檔案集合打包生成lib的過程也稱為"archive"。在應用程式生成過程中鏈結器將**鏈結到目標模組(exe或dll)中,完成鏈結後lib檔案也就沒有用了,程式發布時無需提供lib檔案。

ps:vs2017新建lib專案會預設建立預編譯頭,如果不使用預編譯頭,則進行如下設定並刪除相關檔案即可:

新建乙個控制台應用,在其中呼叫上述生成的lib。

呼叫lib需要兩個檔案:.**件.lib檔案

依次配置下列控制台應用的專案屬性:

使用專案配置的方式呼叫lib庫比較繁瑣,還可能需要對debug版本和release版本作不同的配置。比較適合引用成熟的第三方庫,eg. protobuf, gurobi等。

使用#pragma comment(lib, "../debug/mylib.lib")語句呼叫lib。

#pragma comment語句將庫目錄直接寫進**,更加直觀;需要仔細將頭檔案目錄和庫目錄寫對。

如果lib專案和控制台專案在同一解決方案下,可以採用直接新增引用的方式。

直接引用的方式最為簡單,也避免了路徑寫錯的可能性,但它無法區分該lib庫是debug版本還是release版本。這種方法也等效於直接將lib檔案拖到專案資源裡使用。

專案例項均在vs2017上測試,並上傳至github:

vs2017使用中遇到的問題

1.mfc在介面新增類時,出現缺少預設default.js或者.vbs。在microsoft visual studio2017 community common7 ide vc vcwizards codewiz mfc中新增 檔案即可。移步大神文章。2.在學習中,突然出現了 無法啟動程式,拒絕訪...

一文梳理2017阿里研發崗筆試(1)知識點

inline函式 乙個較為合理的經驗準則是,不要內聯超過 10 行的函式,較大則不會成為內聯函式,謹慎對待析構函式,析構函式往往比其表面看起來要更長,因為有隱含的成員和基類析構函式被呼叫。有些函式即使宣告為內聯的也不一定會被編譯器內聯,這點很重要,比如虛函式和遞迴函式就不會被正常內聯.內聯函式的定義...

在vs2017中嘗試c 單元測試(一)

首先有兩種方式來建立 第一種是新建專案 即包括core型別,也包括傳統型別。第二種是在 處直接右鍵 兩種方法的區別在於 建立單元測試 選單命令僅適用於面向 net framework 但不是 net core 的託管 單元測試的框架很多,mstest是微軟自帶框架,第三方框架nunit 或 xuni...