Windows动态链接库创建使用总结.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文档。上传文档
查看更多
Windows动态链接库创建使用总结

Windows动态链接库创建使用总结 目录  TOC \o 1-3 \h \z \u  HYPERLINK \l _Toc358461238 1 动态链接库创建方式  PAGEREF _Toc358461238 \h 1  HYPERLINK \l _Toc358461239 2 设置动态库导出方式  PAGEREF _Toc358461239 \h 2  HYPERLINK \l _Toc358461240 2.1头文件中声明导出  PAGEREF _Toc358461240 \h 2  HYPERLINK \l _Toc358461241 2.0 .def文件方式定义导出  PAGEREF _Toc358461241 \h 3  HYPERLINK \l _Toc358461242 3 动态链接库加载方式  PAGEREF _Toc358461242 \h 5  HYPERLINK \l _Toc358461243 3.1 隐式链接方式加载DLL  PAGEREF _Toc358461243 \h 5  HYPERLINK \l _Toc358461244 3.2 显示加载DLL  PAGEREF _Toc358461244 \h 5  HYPERLINK \l _Toc358461245 3.3 两种方式的对比  PAGEREF _Toc358461245 \h 6  HYPERLINK \l _Toc358461246 4 注意事项  PAGEREF _Toc358461246 \h 6  1 动态链接库创建方式 2 设置动态库导出方式 2.1头文件中声明导出 (1)在动态库工程的头文件中定义导入导出方式如下: 其中DLLTEST_EXPORTS是定义WIN32动态库后自动生成预处理命令,所以宏定义DLLTEST_EXPORT都将是导出的形式。另外注意预处理命令一般放在头文件的前面。 (2)如果需要定义全局的导出函数,在头文件中应该声明如下: 其中extern C是解决C++和C语言间互相调用时函数命名的问题。但是其只能用于全局函数的声明,不能用于类成员函数的声明。 (3)如果定义导出类,在头文件中应该声明如下: (4)需要特别注意的是,如果一个全局函数或者一个类中的所有函数都在头文件中实现了,哪么这个函数或者类可以不声明为导出类,也可以在动态库外使用,只要包含头文件就可以了。 2.0 .def文件方式定义导出 (1)第一种添加.def文件的方式,File -New -Text File -名称中直接填入DllTest2.def,切记一定要有.def后缀。 (2)第二种添加.def文件的方式,在工程文件夹下新建一个txt文档,然后将文档类型修改为.def文档类型,然后将该.def文件加入到工程中。有一点需要特别提醒,不能隐藏已知文件类型的扩展名,否则无法修改文件类型。 (3)当定义添加了.def文件后,就需要在.def文件中添加导出接口。 LIBRARY:指定动态连接库的内部名称,该名称必须与生成的动态链接库的名称一致。 DESCRIPTION:描述信息,可省略 EXPORTS:声明导出接口 (4)使用.def文件的优点是解决了不同的编译方式的名字改编问题,所有导出函数都是用.def中定义的名字。其中带出类成员函数的方式与全局函数的方式一致。但是有一个缺点,.def导出的函数标示符必须在整个动态库中是唯一的。 3 动态链接库加载方式 3.1 隐式链接方式加载DLL (1)客户端程序不仅需要.dll动态库文件,还需要导出函数声明的头文件和引入库文件。 (2)引入库文件工程设置如下:需要加入生成的引入库文件以及文件所在的路径。 3.2 显示加载DLL (1)显示方式加载DLL不需要包含导出接口的头文件,也不需要在工程设置对话框的Link选项中添加对lib文件的链接。 (2)显示加载方式需要调用一些Windows的接口。 (3)typedef int (*ADDPROC) (int a,int b);程序中函数指针的定义,必须和导出函数定义一致,其中包括调用的约定。 (4)ADDPROC Add = (ADDPROC)GetProcAddress(hInst,Add);如果发生了名字改编,客户端调用时候需要的名字也必须是改编后的名字。 3.3 两种方式的对比 (1)采用动态加载方式,优点是可以在需要时才加载DLL,节约资源;缺点是需要自己手动加入,增加代码编写量,而且如果存在调用方式和名字改编,程序更容易出错。 (2)采用隐式链接方式,优点是实现起来比较简单,在编写客户端代码时就可以把链接工作做好

文档评论(0)

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

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

1亿VIP精品文档

相关文档