被調用的dll項目
/*dllDemo.h中*/
extern "C" _declspec(dllexport) void Func(void); //介面函式宣告
/*dllDemo.cpp中*/
#include "dllDemo.h"
extern "C" _declspec(dllexport)void Func(void) //介面函數定義
{
return;
}
_declspec,Declare Specification,這個關鍵字可以理解為聲明規範。它有許多用法,文法如下:
__declspec ( extended-decl-modifier-seq )
配合dllexport和dllimport,分別表示匯入和到匯出dll介面函數。
調用dll的項目 - 顯式調用
1)只需要dll檔案
2)在調用處用法如下
代碼// a)聲明一個和dll介面函數規則相同的函數指標
typedef void(*pFunc)(void);
pFunc doFunc=NULL;
// b)載入動態連結程式庫dll檔案;
HINSTANCE hDLL;
hDLL = LoadLibrary("dllDemo.dll");
// c)本地函數指標獲得dll中的介面函數;
doFunc=(pFunc)GetProcAddress(hDLL,"Func");
// d)調用
if(doFunc)
{
doFunc();
}
3)調用完畢可以使用Freelibrary(hDLL)釋放dll檔案。
調用dll的項目 - 隱式調用
1)需要dll
2)需要lib,並且在項目依賴項中添加
3)調用處代碼如下
//a) cpp頭部聲明來自dll的外部介面函數,函數名必須一樣。
extern "C"_declspec(dllimport) void Func(void);
int main()
{
//b) 像使用其他函數一樣使用dll介面函數
Func();
return 0;
}
4)運行期間無法釋放dll。
整理自:http://www.cnblogs.com/beer/archive/2010/08/19/1803560.html