调用DLL文件的两种方法(显式调用/隐式调用)完整示例

调用DLL文件的两种方法(显式调用/隐式调用)完整示例

1. DLL是什么

可以参考 https://zhuanlan.zhihu.com/p/146546063 这篇文章

下面说一下我的理解

2. DLL显式调用

LoadLibrary()

GetProcAddress()

FreeLibrary() 三步

(1)LoadLibrary() 加载dll并返回一个句柄,可以是HMODULE或者HINSTANCE(HINSTANCE在win32下与HMODULE是相同的东西,在Win32下还存在主要是因为win16)

(2)然后用GetProcAddress()获得DLL文件中函数的的地址,(函数的入口点)之后就可以调用dll中的函数了

(3)最后要用FreeLibrary(HMODULE)卸载dll

优点:可以决定何时记载和卸载dll,充分体现DLL的灵活性。

缺点:调用繁琐。

完整示例代码

#include "testDLL.h"

#pragma comment(lib,"testDLL.lib")

LPCSTR testFun("test");

HMODULE hModule = LoadLibraryW(L"testDLL.dll");

if (hModule != NULL) {

GetProcAddress(hModule, testFun);

}

//调用testFun

testFun();

FreeLibrary(HModule);//卸载dll

3. DLL隐式调用

(1)读入DLL对应的testdll.lib文件。

(2)dllimport导出dll里面的函数

通过这两步就可以在程序里面调用

完整示例代码

#pragma comment(lib,"testDLL.lib")

extern "C" _declspec(dllimport)void testFun(para1,para2);

//调用testFun

testFun(para1,para2);//示意一下,假设你自己写的testFun函数有两个参数

这里需要DLL文件以及它对应的.h文件,其实只有DLL文件也是可以的,咱们下期再说。

相关推荐

了解千分之五到底是多少?
det365娱乐场

了解千分之五到底是多少?

📅 07-06 👁️ 2708
电容105是多少uf
365bet足球官网

电容105是多少uf

📅 06-30 👁️ 3037
邮政收款码星期六星期天到账吗
det365娱乐场

邮政收款码星期六星期天到账吗

📅 07-08 👁️ 9044