调用DLL文件的两种方法(显式调用/隐式调用)完整示例 您所在的位置:网站首页 VS调用dll entry point not find 调用DLL文件的两种方法(显式调用/隐式调用)完整示例

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

2024-07-17 04:23| 来源: 网络整理| 查看: 265

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文件也是可以的,咱们下期再说。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有