基于Visual+C++60的动态链接库编程的研究与实现.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:3 大小:260KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于Visual+C++60的动态链接库编程的研究与实现.pdf

基于Visual+C++60的动态链接库编程的研究与实现.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据C++6.0的动态链接库编程的研究与实现基于Vilsau彭玉华①王先水②建立DLL32[件,会自动生成de瞍件框架,打JFDll.cpp文件,在extern⋯C_declspec(dllexport)intr①武汉科技大学中南分校信息工程学院②中国地质大学江城学院电信学院)摘要本文主要研究Visual在系统文件中DLL文件是作为一个单独的程序模块封装起来,GDl32.DLL和USER32.DLL一=个模块,其中KERNEL32.DLL.用来处理存储器低层功能、任务和资源管理等Windows核心服务;GDl32用来提供图形没备接口,管理用户界面和图形绘制,包括Windows原文件、位图设备描述表和字体等。而USER32负责窗口的管理,包括消息、菜单、光标、汁时器以及其他与控制窗U显示相关的一些功能、,使用DLL是多个应用程序可以共享一个DLL文件,实现资源”共享”,提高了内存利用率。在软件升级的时,开发人员只需要修改相应的DLL文件就可以了.从而大大提高了软件,F数相加的简单函数,全面地解析了在Visualc++编译环境下编程实动态链接库(DynamicLibrary,DLL)是建立在客户/服务器通信的概念上,提供了一些特定结构的函数、类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由—个或多个应用程序使用。DLL库是在运行时链接,用户程序共享DLL中的函数及数据。而静态库文件的链接过程是在一个工程编译链接成可执行文件过程中实现的,其中函数和数据被编译进~个二进制文件①进程载入时链接。在进程载入时链接DLL,必须拥有DLL文件及引入库(.LIB)文件。LIB库文件提供的信息包括被DLL输出的函数原型、函数名及输出的变量名、类型等,DLL包含实际的函数和数据,调用DLL的进程在编泽时会链接与DLL模块一同提供的LIB库文件,库中的函数和数据并不复制到可执行文件中.而是DLL中所要调用的函数的内存地址,进行编译既成功。当一个或多个应用程序运行时再把程序代码和被调用的函数代码链接起来,从而节省内存和磁盘空间。Windows的API函数的链接过程就属于这种类型,如果指定项目链接MFC为SharedDLL。如果指定的项目链接为MFC为Static②实时动态链接。调用DLL的进程模块使用LoadLibrary或LoadLibraryEx函数装载动态库,通过GetProcAddress函数来获得函数地址,传递相应的参数。编译时只需DLL输出的函数名及函数原型即可。调用完毕后,使J=}jFreeLibrary函数释放动态库资源。Windows并--不为DLL仓9建单独的地址空间,而是将其装入到共享地址,然后映射到不同的进程供进程调用,实现代码共享的目的。DLL是通过导出函数来实现代码共享。被导出函数和变量要在DLL模块头文件导出表中登i己,在较低的VC版本中,这个过程在DLL工程中是使用DEF文件来实现的。在目前的VC环境中,使用dllexport编译器指令来导出函数或变量,在前面加上关键字}//extern”C”表示可用c语青凋用a+b;1//W1NAPI参数传递及堆栈清空当需要调用DLL中数据,使用dllimport编译器指令来导入DLL的函数或变量。如导入函数:创建Win32动态链接库,在Visual【File】菜单打JF【New】对i舌框选中【Project】选项.选择Win32Library方式创建动态链接库,输入项H名称为Dll。在向导的第一步选中“AAppWizardldll]来创建动态链接库。在MFCDLL中有一个默认的入u函数DllMain,函数原型如下:调用函数的原因,lpReserved为系统保留参数,当进程或线程装入或卸载动态链接库时,操作系统调附入u函数,并i兑明动态链接库被凋JI}j的原因。应片j程序使片iDLL中的函数之前,应该先导出这些函数,如要导出函数addfloat(float在DII.h输入如下原代码:在DLL.cpp输入如下代码:该动态链接库编译连接成功后,生成了D11.dll和D11.1ib文件,打开D】l工程中的debug录,可以看到这两个文件。LIB文件中包含DLLSC件名和DLL文件中的函数名等,该LIB文件只是对应该DLL文件的”映像文件”。在进行隐式链接DLL时要用到它。动态链接库DLL实现的方法有两种:一种是隐式调用,另一种是显式调用。隐式调用就是在程序开始执行时就将DLL文件加载到应用程序当中。只要将导入函数关键字一declspec(d11import)函数名等写到应用程序相应的头文件中就可以了。通过隐式链接调用D11dlll车中的addfloat函数,如创建基于对话框的应用程序为TtDll,在对话榧中添加两个按钮,“隐式调用”、“显示调用”.并且分别添加CLICK