[Qt学习笔记]Qt使用MFC编译生成dll库在无编程环境电脑出现无法加载dll的问题

目录

  • 1、 问题介绍
  • 2、 问题分析
  • 3、 问题总结和思考

1、 问题介绍

在项目实践中,使用Qt调用了一个vs创建的dll库,在本机上编译和release后的exe可以加载对应的dll文件,将exe拷贝到有vs编程环境的电脑上也可以加载对应的dll文件,但在无编程环境的电脑上执行exe就会出现无法加载dll的bug。
dll加载BUG.png

2、 问题分析

刚碰到这个问题的时候,感觉可能是dll的依赖项的确实,或者是vc运行库的缺失,如是在新电脑上安装了VC运行库,并使用dependency walker查看了该dll的依赖项并进行补全,发现问题依然存在,接下来考虑的是dll自生生成的环境依赖问题,如是找到了该dll项目的生成环境,将dll生成的运行库设置为“多线程(/MT)”,再重新生成dll就解决新电脑无法加载dll的bug。
运行库设置.PNG

3、 问题总结和思考

这里重新学习一下MFC这种生成dll设定运行库的原理。

编译选项包含静态链接的lib说明
/MD_MT、_DLLMSVCRT.lib多线程、Release、DLL版本的运行时库
/MDd_DEBUG、_MT、_DLLMSVCRTD.lib多线程、Debug、DLL版本的运行时库
/MT_MTLIBCMT.lib多线程、Release版本的运行时库
/MTd_DEBUG、_MTLIBCMTD.lib多线程、Debug版本的运行时库
这里就要注意/MD和/MT的区别了

/MD表示运行时库不集成,一般生成的文件小,如果系统有依赖库可有效减少文件大小。
/MT表示运行时库集成,生成文件大,自带了该dll的依赖库

/MT和/MD选择的要领

  • 1 以下情况选择/MT
    1)有些系统可能没有程序所需版本的运行时库,程序必须把运行时库静态链接上;
    2)减少模块对外界的依赖;
  • 2 以下情况选择/MD
    1)程序就不需要静态链接运行时库,可以减小软件的大小;
    2)所有的模块都采用/MD,使用的是同一个堆,不存在A堆申请,B堆释放的问题;
    3)用户机器可能缺少我们编译时使用的动态运行时库。(补充:如果我们软件有多个DLL,采用/MT体积增加太多,则可以考虑/MD + 自带系统运行时库)
  • 3 注意:如果软件有多个模块dll,必须选择相同的运行时库;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础面试题(三)

1. 和 equals 的区别? 操作符: 是一个比较操作符,用于比较两个对象的引用是否相等。也就是说,它检查两个对象引用是否指向内存中的同一位置。对于基本数据类型(如 int, char, boolean 等), 用…

Centos7部署单节点MongoDB(V4.2.25)

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

Java面试题(Spring篇)

💟💟前言 ​ 友友们大家好,我是你们的小王同学😗😗 今天给大家打来的是 Java面试题(Spring篇) 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞👍 收藏⭐ 评论📄 小王的主页…

[STM32] Keil MDK 新建工程编译不通过(warning: #2803-D和Error: L6218E)解决方法备忘

按照野火的PDF教程的第4章:[野火]《RT-Thread 内核实现与应用开发实战—基于STM32》.pdf 新建 Keil MDK 工程,工程设置完成后点击编译按钮,编译不通过: RTE\Device\ARMCM3\startup_ARMCM3.c(75): warning: #2803-D: unrecognize…

简易C语言词法分析程序

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 问题 词法规则&#xff1a; <标识符>::<字母> <标识符>::<标识符><字母> <标识符>::<标识符><数字> <常量>::&#xff1d;<无符号整数> <…

【DP】第十三届蓝桥杯省赛C++ B组《李白打酒加强版》(C++)

【题目描述】 话说大诗人李白&#xff0c;一生好饮。 幸好他从不开车。 一天&#xff0c;他提着酒壶&#xff0c;从家里出来&#xff0c;酒壶中有酒 2 斗。 他边走边唱&#xff1a; 无事街上走&#xff0c;提壶去打酒。 逢店加一倍&#xff0c;遇花喝一斗。 这一路上&am…

如何准备2024年汉字小达人:历年考题练一练-18道选择题解析

距离2024年第11届汉字小达人比赛还有七个多月的时间&#xff0c;如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。阅读理解不需要。②把历年真题刷刷熟&#xff0c…

Mybatis之自定义映射resultMap

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

基于springboot+vue的失物招领平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

更智能的广告素材生成!看A/B测试如何驱动AIGC素材调优

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 前言&#xff1a;AIGC 大爆发&#xff0c;引发广告营销行业变革 ChatGPT 等 AI 产品引发的 AIGC 大爆发引起了各行业的震动&#xff0c;其中以图片生成甚至视频生成…

操作系统:malloc与堆区内存管理

malloc是函数而不是系统调用&#xff0c;他的底层是同调调用brk和mmap这两个系统调用实现功能的&#xff0c;具体选择brk还是mmap要看申请的空间大小以及malloc中的阈值&#xff08;一般是128kb&#xff09; 注意申请的空间只有使用才会触发缺页中断映射到物理内存 不理解的话先…

现货黄金做对冲的具体方法

现货黄金做对冲的具体方法是运用金融衍生工具和策略&#xff0c;以减轻或消除持有现货黄金所面临的市场风险。具体而言&#xff0c;投资者可通过期货合约、期权、掉期等金融工具来实现对冲&#xff0c;保障其投资价值不受金价波动的负面影响。 &#xfeff; 期货合约在对冲中…

Ceres求解非线性优化问题步骤与示例

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 在计算机视觉和机器人领域&#xff0c;经常需要解决非线性优化问题来估计相机姿态或运动模型。Ceres Solver是一个开源的C库&#xff0c;专门用于解决最小二乘问题&am…

HarmonyOS/OpenHarmony应用开发-HDC环境变量设置

hdc&#xff08;HarmonyOS Device Connector&#xff09;是 HarmonyOS 为开发人员提供的用于调试的命令行工具&#xff0c;通过该工具可以在 windows/linux/mac 系统上与真实设备或者模拟器进行交互。 hdc 工具通过 HarmonyOS SDK 获取&#xff0c;存放于 /Huawei/Sdk/openhar…

C++:指针 引用 普通变量适用场景

什么时候用指针 什么时候用引用 什么时候用普通变量 在C中&#xff0c;我们可以根据不同的需求选择使用指针、引用或普通变量。 使用指针的情况&#xff1a; 指针是一个变量&#xff0c;它存储了一个内存地址。我们可以使用指针来间接访问和修改内存中的数据。以下是一些使用…

sde的几个问题

数据库:aix6.1oracle11.2.0.1 sde数据为从原先oracle10.2.0.5中导入的。 环境&#xff1a;windows2008x64 安装sde10 for oracle11g x64oracle11.2.0.1x64客户端。 启动出现问题&#xff1a; ST_Geometry Schema Owner: (SDE) Type Release: 1007 Instance initialized fo…

5.1.7、【AI技术新纪元:Spring AI解码】Mistral AI Chat

Mistral AI 聊天 Spring AI 支持 Mistral AI 的各种 AI 语言模型。您可以与 Mistral AI 语言模型进行互动,并基于 Mistral 模型创建多语言对话助手。 先决条件 您需要创建一个与 MistralAI 的 API 以访问 Mistral AI 语言模型。在 MistralAI 注册页面创建账户并在 API Keys…

零基础学python:17、课后练习作业

课后练习 #1.写一个装饰器,传入一个函数,测量一下这个函数的运行时间 import time def wrapper(func):def run(*args,**kwargs):start = time.time()func(*args

HTTP协议初识

HTTP协议 HTTP协议简介与作用HTTP基本工作原理非持久连接与持久连接的区别HTTP请求与响应HTTP请求HTTP响应请求与响应的交互流程 HTTP方法实例GET 请求示例POST 请求示例HEAD 请求示例 使用场景 HTTP状态码HTTP消息结构与头字段头字段 HTTP的无状态性与状态管理初步了解安全性与…

C++(4): std::ofstream的使用

1. ofstream 之前讲到&#xff0c;ifstream具有将文件从硬盘中读进内存的功能。而ofstream则是执行反操作&#xff0c;它提供了将文件从内存写入磁盘的功能。 std::ofstream 是 C 标准库中用于文件输出的类&#xff0c;它提供了向文件写入数据的能力。std::ofstream 属于 <…