windows下VS2010中lib與dll文件的生成與使用

近期在windows下開發了某個程序,須要將其生成靜態文件(lib)以及動態庫文件(dll),其中參考了很多帖子,有的講得也不是很清楚明白,先將本人實踐過的記錄一下,供後期本身查詢,也供各位大牛點評。windows

1、lib文件的生成與使用函數

一、lib的生成spa

相對來講,靜態庫文件仍是比較容易生成和使用的,在代碼上,貌似也不須要更改什麼,舉例說明:code

頭文件函數聲明形式以下:接口

extern bool Uninitialize();

在VS2010項目中,「新建->項目->Win32項目->靜態庫」,配置好相應的項目屬性便可。開發

其中大體包括(根據我的項目須要去配置,如何配置可參考網上其餘帖子,比較多):
源碼

「配置屬性->常規->字符集->(選你須要的字符集)」it

「VC++目錄->包含目錄」編譯

「VC++目錄->庫目錄」class


項目生成以後,會在項目目錄中生成相應的lib文件,這個lib文件就是真正的靜態庫文件。(與dll生成中產生的lib文件仍是不一樣的,這在dll生成的時候須要特別注意一下)


二、 lib文件使用,無需過多配置,只須要在「VC++目錄->庫目錄」引入須要的lib文件便可

2、dll文件的生成與使用

一、dll的生成

動態庫文件dll的生成就沒有那麼簡單了,稍微須要修改一點源碼(相比起來,仍是比較喜歡Linux下so文件生成的方式,徹底不須要更改源碼,編譯命令修改便可)

一樣舉例說明,windows下源碼例子 ,一樣對於Uniitialize函數,咱們須要添加dll導出宏定於在函數聲明處:

#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif
//.h文件函數聲明
EXPORT extern bool Uninitialize();
//.cpp文件函數實現
EXPORT bool Uninitialize()
{
}

一樣在VS2010項目屬性中,「新建->項目->Win32項目->DLL」,咱們也須要設置項目屬性,這與靜態庫基本相似,依賴的lib文件可在「連接器->輸入」中設置。

項目生成以後,會在項目目錄中生成相應的dll文件以及一個lib文件,注意,此處的lib文件並不是靜態庫文件,而是dll文件的相應函數導入庫文件。


二、dll的使用

dll使用有兩種方式,一個是隱式使用,一種是顯示使用,這裏我只講講我本身試驗過的隱式使用方式,由於此種方式不須要我demo程序中調用接口時更改接口的使用方式(即不須要LoadLibrary以及GetProcAddress等等),關於顯示調用dll接口的方法,你們可參考網上其餘不少帖子說明

// .h文件,函數聲明仍是須要導出
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif

EXPORT extern bool Uninitialize();

如上隱式使用dll時,對於接口的頭文件,咱們仍是須要導出宏定義


注意:配置項目屬性的時候,生成dll時產生的對應lib文件(即dll的函數導入庫文件)是須要「VC++目錄->庫目錄」引入的,同時將dll文件放在項目目錄exe對應的文件夾下便可

相關文章
相關標籤/搜索