1. dll帮助类

(1)dll的动态链接

  ①传统的调用方式:先调用LoadLibrary来加载dll,再定义函数指针类型,接着调用GetProcAddress获取函数地址。然后通过函数指针调用函数,最后通过FreeLibrary卸载dll

  ②问题:使用dll的过程存在重复逻辑。此外,如果dll中的函数较多,就需要频繁的定义函数指针和反复调用GetProcAddress。

(2)解决方案

  ①封装GetProcAddress函数,FARPROC类型的函数指针转换成std::function

  ②由于函数的入参数目、类型及返回值各不相同,可以通过result_of和可变参数模板来解决(见ExecuteFunc函数)。

【编程实验】简化dll的调用

//Dll.h

#ifndef _DLL_H_
#define _DLL_H_

#ifdef BUILD_DLL /* DLL export */ 
#define EXPORT __declspec(dllexport) 
#else /* EXE import */ 
#define EXPORT __declspec(dllimport) 
#endif 

#ifdef __cplusplus
extern "C"{
#endif

//求最大值
EXPORT int Max(int a, int b);

//求和
EXPORT int Sum(int a, int b);

#ifdef __cplusplus
}
#endif

#endif
View Code

相关文章:

  • 2021-09-24
  • 2021-09-03
  • 2021-08-19
  • 2021-05-16
  • 2022-02-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-02
  • 2021-09-20
  • 2021-08-11
  • 2021-06-18
  • 2021-11-15
  • 2023-03-24
相关资源
相似解决方案