当前位置: 首页 > web >正文

windows编程中加载DLL的两种典型方式的比较

文章目录

  • DLL定义
    • 头文件定义
    • CPP实现
  • DLL的调用代码
    • 直接使用
    • 通过LoadLibrary调用
  • 导入表的依赖
  • LoadLibrary使用DLL库中的类
    • DLL中定义工厂函数
    • 调用时的代码
    • 补充:为什么LoadLibrary不能直接导出类

在windows的编程中,使用DLL是一个非常常见的操作。一般来说,有两种集成DLL的方式:

  • 在IDE中集成DLL依赖,直接调用
  • 使用系统API LoadLibrary动态加载DLL,然后通过获取指定名字的函数来调用。

这两种方式的几个比较明显的区别就在于:

  • 是否往加载DLL的exe文件的导入表中写入依赖信息,这个就会导致exe是否在启动时就检查对DLL文件的依赖。

  • 还有一个重要的区别就在于,如果使用LoadLibrary加载的话,导出的DLL中的类无法被直接使用,需要定义一个工厂类的函数来创建类。

  • IDE应该对函数的命名做了转换,在LoadLibrary方式的时候,通过GetProcAddress的时候,如果导出函数没有定义extern "C"对函数命名没有约束的时候会找不到(参考之前讲extern "C"的文章)。

no code,no BB,用代码来看一下这个依赖的情况。

DLL定义

头文件定义

http://www.xdnf.cn/news/6855.html

相关文章:

  • 找客户的app
  • 人脸表情识别检测数据集VOC+YOLO格式9400张8类别
  • Quartus qsf 文件 常用约束指令分析
  • 【C++】STL简介
  • 保存主表信息以及关联信息
  • 青少年ctf平台应急响应-应急响应1
  • 测试:TestCafe - 判断按钮是否活性化
  • ROS资料推荐学习
  • GCC 版本与C++ 标准对应关系
  • JWT令牌
  • 记一次从windows连接远程Linux系统来控制设备采集数据方法
  • 武器装备论证全流程分析
  • GDB 高级调试技术深度解析
  • 自定义类型-结构体传参
  • 京东方10.1寸工业液晶屏GV101WXM-N80
  • 【在aosp中,那些情况下可以拉起蓝牙服务进程】
  • 道路运输企业管理人员考试真题练习
  • Shotcut:免费开源的视频编辑利器
  • [特殊字符] Maven配置阿里云镜像终极指南(2024最新版)
  • DevExpressWinForms-GridControl-无限滚动
  • “数据类型与OOP核心”的一些问题
  • 团队模式总结
  • python第二十七天
  • 吉客云数据集成到金蝶云星空的最佳实践
  • ai agent(智能体)开发 python高级应用4:什么是代理,如何设置squid代理服务器,让crawl4ai 0.6.3 用上代理,获取到数据平权
  • MySQL中表的增删改查(CRUD)
  • 【Win32 API】 lstrcpyA()
  • Python3.12之解决:externally-managed-environment问题(二十九)
  • 薄膜压力传感器主要应用场景
  • STM32外设AD-轮询法读取模板