动态个链接库创建步骤.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态链接库动态链接库通常不能直接运行,也不能接受消息。他们是一些独立的文件,其中包含能被可执行程序或其他DLL调用来完成某项工作的函数。只有在其他模块调用动态链接库中的函数时,它才发挥作用。Windows API中的所用函数都是包含在DLL中。其中有3个最重要的DLL, Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗体的创建和消息的传递)的各个函数。静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,编译链接可执行文件时,链接器从库中复制这些函数和数据并把他们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件)。动态库:在使用动态库的时候,往往提供两个文件:一个引入库和一个DLL。引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中的导出函数。使用动态链接库的好处:可以采用多种编程语言来编写。增强产品的功能。提供二次开发的平台。简化项目管理。可以节省磁盘空间和内存。有助于资源的共享。有助于实现应用程序的本地化引入方式:隐式引入(直接在项目设置里链接选项卡里导入.LIB的引入文件)显示引入(使用LoadLibrary、GetProcAddress、FreeLibrary)导出声明使用模版定义文件(.def)作用:禁用名字改编但类不能禁用,类的方法却可以禁用,但调用约定也要保持一致。LIBRARY “Dll1”EXPORTSaddsubtract在客服端的使用在源文件中声明的方式:Extern int add(int a, int b);Extern int subtract(int a, int b);推荐(更快)_declspec(import) int add(int a, int b);_declspec(import) int subtract(int a, int b); 在头文件中的声明的方式:Dll1.h#ifndef DLL1_API#define DLL1_API extern “C” _declspec(dllimport)#endifDLL1_API int add(int a, int b);DLL1_API int subtract(int a, int b);Dll.cpp#define DLL1_APIextern “C”_declspec(dllexport)#include DLL1.h //包含定义的头文件-Dll1.h注:extern “C”使函数不参见名字改编但是不能导出类只能全局函数。如果函数的调用约定发生改变也将参加名字改编比如将默认的c语言调用约定改为了pascal调用约定时。实例为了演示建立动态链接库的一个过程,在此实例中只完成在动态链接库中建立一个类和两个函数。Step1.新建一个空的动态链接库工程。Step2.添加一个头文件(Dll3.h)录入如下代码:#ifndef DLL3_API#define DLL3_API _declspec(dllimport)#endifDLL3_API int add(int, int);DLL3_API int subtract(int, int);class DLL3_API MyRectangle{public:MyRectangle(int, int);int GetArea();private:int width_;int height_;};Step3.添加一个原文件(Dll3.cpp)录入如下代码:#define DLL3_API _declspec(dllexport)#include Dll3.hint add(int a, int b){return a + b;}int subtract(int a, int b){return a - b;}MyRectangle::MyRectangle(int w, int h):width_(w), height_(h){}int MyRectangle::GetArea(){return width_ * height_;}Step4.添加一个模版定义文件(Dll3.def)录入如下代码:在当前目录下建立一个文本文件更名为Dll3.def再导入到工程中即可LIBRARY Dll3EXPORTSaddsubtractGetAreaStep5.编译工程。Step6.建立一个测试动态链接库的对话框工程(DllTest)Step7.在对话框中添加三个按钮测试动态链接库的函数(库以隐式引入)Step8.把动态链接库

文档评论(0)

zzabc003 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档