动态连接库的创建步骤:.doc_第1页
动态连接库的创建步骤:.doc_第2页
动态连接库的创建步骤:.doc_第3页
动态连接库的创建步骤:.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

动态连接库的创建步骤: 一、创建Non-MFC DLL动态链接库 1、打开File New Project选项,选择Win32 Dynamic-Link Library sample project 工程名:DllDemo 2、新建一个.h文件DllDemo.h以下是引用片段: #ifdefDllDemo_EXPORTS #defineDllAPI_declspec(dllexport) #else #defineDllAPI_declspec(dllimport) externC/原样编译 DllAPIint_stdcallMax(inta,intb);/_stdcall使非C/C+语言内能够调用API #endif 3、在DllDemo.cpp文件中导入DllDemo.h文件,并实现Max(int,int)函数以下是引用片段: #includeDllDemo.h DllAPIint_stdcallMax(inta,intb) if(a=b) returnNULL; elseif(ab) returna; else returnb; 4、编译程序生成动态连接库 二、用.def文件创建动态连接库DllDemo.dll。 1、删除DllDemo工程中的DllDemo.h文件。 2、在DllDemo.cpp文件头,删除 #include DllDemo.h语句。 3、向该工程中加入一个文本文件,命名为DllDemo.def并写入如下语句: LIBRARY MyDll EXPORTS Max1 4、编译程序生成动态连接库。 动态链接的调用步骤: 一、隐式调用 1、 建立DllCnslTest工程 2、 将文件DllDemo.dll、DllDemo.lib拷贝到DllCnslTest工程所在的目录 3、 在DllCnslTest.h中添加如下语句:以下是引用片段: #defineDllAPI_declspec(dllimport) #pragmacomment(lib,DllDemo.lib)/在编辑器link时,链接到DllDemo.lib文件 externC DllAPIint_stdcallMax(inta,intb); 4、在DllCnslTest.cpp文件中添加如下语句:以下是引用片段: #includeDllCnslTest.h/或者#includeDllDemo.h voidmain() intvalue; value=Max(2,9); printf(TheMaxvalueis%d,value); 5、编译并生成应用程序DllCnslTest.exe 二、显式调用 1、 建立DllWinTest工程 2、 将文件DllDemo.dll拷贝到DllWinTest工程所在的目录或Windows系统目录下。 3、 用vc/bin下的Dumpbin.exe的小程序,查看DLL文件(DllDemo.dll)中的函数结构。 4、 使用类型定义关键字typedef,定义指向和DLL中相同的函数原型指针。 例:以下是引用片段: typedefint(*lpMax)(inta,intb);/此语句可以放在.h文件中 5、 通过LoadLibray()将DLL加载到当前的应用程序中并返回当前DLL文件的句柄。 例:以下是引用片段: HINSTANCEhDll;/声明一个Dll实例文件句柄 hDll=LoadLibrary(DllDemo.dll);/导入DllDemo.dll动态连接库 6、 通过GetProcAddress()函数获取导入到应用程序中的函数指针。 例:以下是引用片段: lpMaxMax; Max=(lpMax)GetProcAddress(hDLL,Max); intvalue; value=Max(2,9); printf(TheMaxvalueis%d,value); 7、 函数调用完毕后,使用FreeLibra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论