DLL的两种调用方法总结

DLL调用方式可以分为两类:

隐式调用(需要.lib 和.dll)

显式调用(需要.dll)


隐式调用

隐式加载就是在程序编译的时候就将dll编译到可执行文件中。这种加载方式调用方便,程序发布的时候可以不用讲dll带着.缺点是,这样编译出来后,程序会很大。

新建一个工程,将所需的.dll  .lib  .h放到工程目录下

//隐式加载dll
#pragma comment(lib, "dllDemo.lib")

或者在项目->属性->链接器->输入中添加附加依赖项 dllDemo.lib。

编译运行,该DLL会直接执行其中的可执行代码

显式调用

DLL显式加载时指在程序运行过程中,需要用到dll里的函数时,再动态加载dll到内存中,这种加载方式因为是在程序运行后再加载的,所以可以让程序启动更快,而且dll的维护更容易,使得程序如果需要更新,很多时候直接更新dll,而不用重新安装程序.只是这种加载方式,函数调用稍微复杂一点。

需要注意的时这种方式下调用相比较为复杂。比如之前文章中的调用带界面的DLL时,

        //1.加载动态库
	HINSTANCE  m_hDll = LoadLibrary(_T("MFCDLL1.dll"));

	//2.根据函数名获取函数地址
	typedef IHpDllWin* (*hpDllFun)();
	hpDllFun pShowDlg = (hpDllFun)GetProcAddress(m_hDll, "ShowDialog");


        //3.获取导出类对象指针,调用导出函数
	IHpDllWin* m_hpwin = pShowDlg();

        //4.卸载dll
        FreeLibrary(hDll);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值