看流星社区

 找回密码
 注册账号
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
查看: 298|回复: 3

C++动态调用DLL写法分享

[复制链接]

该用户从未签到

发表于 2020-3-22 21:43:56 | 显示全部楼层 |阅读模式

动态调用也被称为显示调用,即在运行程序过程中,需要调用DLL中的功能时才调用。

相对于隐式调用,此种方式会有明确的语句载入DLL和获取其中的函数地址,调用过程相对静态调用会复杂一些,但不需要LIB文件的支持,仅有DLL文件即可。

在动态调用时,首先要加载头文件。
  1. #include <Windows.h>
复制代码


Windows头文件中包含可以加载DLL的函数。
在调用DLL函数之前,要定义函数指针,用来调用函数。可以看出,函数指针的类型与DLL中的要一致。
  1. typedef int (*pAdd)(int *a, int *b);
复制代码


调用LoadLibrary函数加载DLL文件。加载成功,hDLL指针不为空。
  1. HINSTANCE hDLL = LoadLibrary("testDLL.dll");
复制代码


如果加载成功,则可通过GetProcAddress函数获取DLL中需要调用的函数的地址。获取成功,pFun指针不为空。
  1. pAdd pFun = (pAdd)GetProcAddress(hDLL, "Add");
复制代码


获取地址成功后,通过pFun调用函数功能。
  1. cout << pFun(a, b) << endl;
复制代码


在完成调用功能后,不在需要DLL支持,则可以通过FreeLibrary函数释放DLL。
  1. FreeLibrary(hDLL);
复制代码


其实动态调用的方式,才是DLL设计的初衷,不过复杂的调用方式,使得其不是非常受编程者欢迎。


点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2020-7-13 05:50

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表