How To:建立Win32 Dynamic-Link Library

王朝system·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航