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

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定义

头文件定义

相关文章:

  • 内部检测实验室数字化转型新路径 质检LIMS系统如何实现合规、效率、资质三重突破?
  • 小结:JavaScript 模块化工具链
  • 日志与策略模式
  • 针对面试-微服务篇
  • Android应用内存分析与优化 - 工具篇之Booster
  • 安科瑞DJSF1352-D直流电能表:破解充电桩计量难题
  • Spring Boot 封装 MinIO 工具
  • 5.16本日总结
  • 物联网僵尸网络防御:从设备认证到流量染色
  • Redis解析
  • Axure设计的“广东省网络信息化大数据平台”数据可视化大屏
  • 软件测试—接口测试面试题及jmeter面试题
  • 职教实训室中的写实数字人:技术与应用方案
  • 工商总局可视化模版 – 基于ECharts的大数据可视化HTML源码
  • 携程token纯算分析
  • Vulfocus靶场-文件上传-3
  • 智慧灌区信息化节水灌溉系统解决方案
  • DeepSearch:WebThinker开启AI搜索研究新纪元!
  • 【LLM】大模型落地应用的技术 ——— 推理训练 MOE,AI搜索 RAG,AI Agent MCP
  • win10-django项目与mysql的基本增删改查
  • 法律顾问被控配合他人诈骗酒店资产一审判8年,二审辩称无罪
  • 澎湃与七猫联合启动百万奖金征文,赋能非虚构与现实题材创作
  • 马上评|训斥打骂女儿致死,无暴力应是“管教”底线
  • 降水较常年同期少五成,安徽四大水利工程调水超11亿方应对旱情
  • 会谈时间迟迟未定、核心议题存在分歧,俄乌“土耳其谈判”一波三折
  • 牛市早报|持续推进城市更新行动意见印发,证监会强化上市公司募资监管