打开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!