最新动态
DLL的创建与使用
2024-12-18 10:53

一、动态链接库(DLL)

动态链接库提供了一种方法,使进程可以调用不属于其执行代码的函数。函数的可执行代码位于一个.dll文件中,该文件包含一个或多个已被编译、链接并使用它们的进程分开存储的函数。

优点:

1.扩展了 应用程序的特性

2.可以使用多种编程语言来编写

DLL的创建与使用

3.简化项目的管理

二、依赖项

当某个程序或DLL使用其他DLL或DLL函数时,就会创建依赖项,因此程序就不会再独立了,依赖项如果被破坏,该程序可能出现问题。

三、入口点

在创建DLL时,可以有选择地指定入口点的函数。当进程或线程将它们自身附加到DLL或者将它们自身以DLL分离时,都会调用入口函数。入口函数应该只进行简单的初始化工作,而不应该调用其他DLL函数或者终止函数。

关于创建DLL,我的环境是VS2017,步骤为:文件->新建项目->选择动态链接库(DLL)->完成。在创建的项目中的源文件可以看到有一个已经创建好的dllmain.cpp,这个就DLL入口点的代码了。

四、如何导出(在DLL中实现的)

第一种:

步骤1:向所有需要导出的DLL函数中添加关键字__declspec(dllexport)。

步骤2:要在应用程序中使用导出的DLL函数,必须使用__declspec(dllexport)来声明要导入的各个函数。

本章使用的就是这种方法

通常最好使用一个包含define语句和ifdef语句的头文件,以便分隔导出语句和导入语句,代码如下。

说明:该DLL库实现的是简单的加减乘除运算,注意实现减法的这个函数,我这里特别使用了一个抽象类来实现,我发现有些企业代码都会有这种类似的抽象类,然后用纯虚函数做接口。

第二种:

创建模块定义文件.def以列出导出的DLL函数:

五、特别调用

需要注意以下一些情况:

1.如果使用了Win32 API,则应该使用关键字__stdcall修饰函数

2.如果将C++生成的DLL供标准C语言使用,输出文件用extern "C"来修饰,设置导出函数时采用.def文件形式,而不是__declspec(dllexport)

六、编写DLL

创建DLL工程并且定义了相应的导出函数、变量或类之后,接下来就是实现功能了。本章中因为CExportDll是一个抽象类,所以需要再创建一个它的子类(CExportDllChild.h中),实现相应的接口功能(EXportDll.cpp中),同时其他函数也在(EXportDll.cpp)中实现功能。

创建编写好后,进行生成,可以在项目Debugp目录下看到生成的动态库.dll和静态库.lib

七、调用DLL

调用DLL有两种方法,一种是显式链接方式,另一种是隐式链接方式。

在调用前,先创建一个Win32控制台应用程序或者MFC,这里创建的是一个简单的Win32程序(LoadDll)

1.显式链接:

在此项目中,需要将CExportDllChild.h放在LoadDll目录下。然后在cpp中添加以下代码

调用结果:

2.隐式调用

在程序开始执行时就将DLL文件加载到应用程序中。隐式调用没用过,不做表述了。

    以上就是本篇文章【DLL的创建与使用】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/news/7057.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
环球圆桌对话:用反制告诉美方,霸道高关税是错的
编者按:近日,美国借“对等关税”的名义挑动全球范围的“关税战”,引起国际舆论关注。中国为什么必须就“对等关税”实施反制?
OPPO、ViVO、加多宝的品牌营销强在哪里?oppo手机是哪个国家的品牌「OPPO、ViVO、加多宝的品牌营销强在哪里?」
今天跟大家分享品牌营销,它有规律可循。▌一、营销的品牌导向1.企业的品牌导向:创业的时候,开始的时候是产品导向,还是品牌导
手机静态ip设置参数 这七步帮你完成手机静态ip「手机静态ip设置参数 这七步帮你完成」
手机在我们现在飞速发展的社会中有着十分重要的作用,随着互联网的发展,手机的速度也是越来越快,越来越流畅。但也有时候我们在
tplogin重新设置密码,tplogincn路由器设置管理密码是多少tplogincn手机登录「tplogin重新设置密码,tplogincn路由器设置管理密码是多少」
tplogincn路由器路由器的管理密码:1.一般路由器的管理账号和密码是:admin(小写字母)。2.有些路由器要求安全登录一次,并设置自己
vivo 是什么手机牌子?认识一款手机-VIVOvivo中文叫什么手机「vivo 是什么手机牌子?认识一款手机-VIVO」
vivo,一个从音乐手机起步,逐渐成长为全球知名品牌,在智能手机领域不断追求创新和完美的品牌。从最初的步步高音乐手机,到如今
游戏手机的自我救赎:ROG 8 Pro上手后,我看到了ROG的未来专门打游戏的手机「游戏手机的自我救赎:ROG 8 Pro上手后,我看到了ROG的未来」
来源|锚思科技作者|陈宝玉 游戏手机二选一,告诉你我的选择!!! 游戏手机作为手机的一个细分产品线,只有专业玩家和对游戏有
battery guru最新版 v2.3.13手机电池检测软件「battery guru最新版 v2.3.13」
battery guru最新版是一款能够对你安卓设备的电池进行保护,能够延长其使用寿命。多项功能的设置,让你能够通过更为精准的数据,
CBA1/4决赛:辽篮拿到赛点,青岛队扳平比分
4月15日,2024-2025赛季中国男子篮球职业联赛(CBA)季后赛四分之一决赛继续进行,首回合失利的青岛队客场大胜广厦队将总比分扳
单场0分又被雪藏!火箭队第18人恐难留队,三分精准,但功能单一
火箭队季后赛的对手已然确定。北京时间4月16号,孟菲斯灰熊队客场不敌勇士队。如此一来,灰熊队还得与独行侠以及国王队的胜者进
《刺客信条:奥德赛》v1.5.0十四项修改器[MrAntiFun][Epic]刺客信条手机版下载「《刺客信条:奥德赛》v1.5.0十四项修改器[MrAntiFun][Epic]」
《刺客信条:奥德赛》v1.5.0十四项修改器,包含无限肾上腺素,无限技能点,完美潜行等等功能助你轻松“暗杀”!让你在希腊尽情无