打開Visual C++6.0,選擇Win32 Dynamic-Link Library;
新建一個名爲dlltest的project, 根據嚮導選擇 “a simple DLL project”,這樣就免去了自己寫默認代碼的麻煩。
打開dlltest.cpp文檔,裏面的默認代碼如下:
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
通常情況下,我們會把代碼修改如下:
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
如對這部分有問題,可以在MSDN中搜索 “dllmain”來參考。
在dlltest.cpp中加入自定義的函數,比如:
void _declspec(dllexport) hello()
{
MessageBox(NULL,"helloworld","OK",MB_OK);
}
其中,_declspec(dllexport)是VC++提供的一個關鍵字,用它可在動態連接庫中輸出一個數據、
一個函數或一個類。用這個關鍵字可省去.DEF文件.
再建立一個dlltest.h,將我們自定義的函數聲明如下,以便其他程序調用:
_declspec(dllimport) void hello();
編譯後,我們得到dlltest.dll和dlltest.lib。
下面我們來調用dlltest.dll中的函數。
選擇Win32 Application, 新建一個名爲test的Project. 根據嚮導選擇a simple Win32 application(也是爲了免去寫默認代碼的麻煩)。
在test.cpp中修改代碼如下:
#include "stdafx.h"
#include "dlltest.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
hello();
return 0;
}
並將dlltest.h,dlltest.lib和dlltest.dll加入到test的目錄下,並將dlltest.h和dlltest.lib加入工程,
編譯通過,運行,結果會彈出一個顯示”helloworld”的messagebox!