在Qt中使用LoadLibrary无法加载DLL

Qt系列文章目录

文章目录

  • Qt系列文章目录
  • 前言
  • 一、问题分析

前言

最近因项目需要使用qt做开发,之前使用LoadLibrary加载dll成功,很庆幸,当一切都那么顺风顺水的时候,测试同事却发现,在windows平台上个别电脑上加载dll会失败。现在加载返回空指针,强大的qt提供了QLibrary类,方便dll动态加载。

 DWORD iErrorCode;HINSTANCE hlib=LoadLibrary(TEXT("CartDll.dll"));if(!hlib){iErrorCode = GetLastError();cout<<" last error code = "<<iErrorCode<<endl;cout<<"open cart dll error!"<<endl;return -1;}

在Qt中使用LoadLibrary无法加载DLL
在这里插入图片描述

一、问题分析

1.首先想到的是CartDll.dll相关依赖库缺失,查找dll依赖文件的方法
使用visual studio自带的工具查找
在这里插入图片描述

进入CartDll.dll所在目录,
输入命令:dumpbin -imports CartDll.dll
或者使用从定向到txt文本中:dumpbin -imports CartDll.dll > result.txt
在这里插入图片描述

Microsoft (R) COFF/PE Dumper Version 14.29.30138.0
Copyright (C) Microsoft Corporation.  All rights reserved.Dump of file CartDll.dllFile Type: DLLSection contains the following imports:libifcoremd.dll1800AE0C8 Import Address Table1800BBCF0 Import Name Table0 time date stamp0 Index of first forwarder reference176 for_inquire249 for_rewind282 for_write_int_fmt_xmit281 for_write_int_fmt12B for_dealloc_allocatable289 for_write_seq_lis_xmitD2 for_concat278 for_trim248 for_read_seq_xmit242 for_read_seqDD for_cpystrD1 for_close1B2 for_pause246 for_read_seq_lis_xmit288 for_write_seq_lis245 for_read_seq_lis1B1 for_open179 for_is_nan_s_26F for_stop_core287 for_write_seq_fmt_xmit286 for_write_seq_fmtlibifportMD.dll1800AE178 Import Address Table1800BBDA0 Import Name Table0 time date stamp0 Index of first forwarder reference154 SYSTEMlibmmd.dll1800AE188 Import Address Table1800BBDB0 Import Name Table0 time date stamp0 Index of first forwarder reference1D8 cbrtf336 sinf2E2 logf345 tanf153 __libm_sse2_sincos1EE cexpf20B cos20F cosf173 __powr4i42D7 log10f30C powf154 __libm_sse2_sincosf246 expf19C acosfMSVCR110.dll1800AE040 Import Address Table1800BBC68 Import Name Table0 time date stamp0 Index of first forwarder reference336 _lock49B _unlock5EB memmove18D __dllonexit3DD _onexit17E __clean_type_info_names_internal161 __CppXcptFilter1E0 _amsg_exit5A3 free347 _malloc_crt2C6 _initterm2C7 _initterm_e1F6 _calloc_crt5E9 memcpy5ED memset160 __C_specific_handlersvml_dispmd.dll1800AE200 Import Address Table1800BBE28 Import Name Table0 time date stamp0 Index of first forwarder reference392 __svml_logf4399 __svml_logf4_mask3BB __svml_powf4_mask3B6 __svml_powf4316 __svml_irem4482 __svml_tanf4286 __svml_expf410 __svml_acosf41AE __svml_cosf428B __svml_expf4_maskKERNEL32.dll1800AE000 Import Address Table1800BBC28 Import Name Table0 time date stamp0 Index of first forwarder reference318 GetTickCount642FB GetSystemTimeAsFileTime22E GetCurrentThreadId43F QueryPerformanceCounter118 DecodePointer140 EncodePointer132 DisableThreadLibraryCallsSummary193FE000 .data3000 .pdataF000 .rdata3000 .reloc1000 .rsrcAD000 .text

2.方法二使用Dependencies.exe工具打开 CartDll.dll
在这里插入图片描述
3.方法3:修改代码

int main()
{DWORD iErrorCode;
//    HINSTANCE hlib=LoadLibrary(TEXT("CartDll.dll"));//    QString strFilePath = "CartDll.dll";LPCWSTR lpLibFileName = TEXT("E:\\osg\\work\\CallCartDll_20230721\\CallCartDll\\CartDll.dll");HINSTANCE hlib= LoadLibraryEx(lpLibFileName,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);if(!hlib){iErrorCode = GetLastError();cout<<" last error code = "<<iErrorCode<<endl;cout<<"open cart dll error!"<<endl;return -1;}}

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

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

相关文章

Redis BitMap/HyperLogLog/GEO/布隆过滤器案例

面试问题&#xff1a; 抖音电商直播&#xff0c;主播介绍的商品有评论&#xff0c;1个商品对应了1系列的评论&#xff0c;排序展现取前10条记录用户在手机App上的签到打卡信息&#xff1a;1天对应1系列用户的签到记录&#xff0c;新浪微博、钉钉打卡签到&#xff0c;来没来如何…

【Grafana】中文界面配置 v10.0.3

比如通过 docker run -d -p 3000:3000 -v /e/code/monitor/grafana/grafana.ini.txt:/etc/grafana/grafana.ini grafana/grafana运行一个容器&#xff08;最新是v10.0.3&#xff09;。 在 /admin/settings 可以看到 users 部分有一个 default_language 配置。 所以在挂载到 …

速看!Milvus JavaScript 客户端入门级使用指南

Milvus 是一款云原生的开源向量数据库&#xff0c;专为向量相似性搜索和 AI 应用赋能。Milvus 支持水平扩展&#xff0c;可以处理海量数据&#xff0c;同时&#xff0c;Milvus 还提供多语言的 SDK &#xff08;包括 JavaScript&#xff09;。 使用 Milvus node.js SDK&#xff…

php代码审计,php漏洞详解

文章目录 1、输入验证和输出显示2、命令注入(Command Injection)3、eval 注入(Eval Injection)4、跨网站脚本攻击(Cross Site Scripting, XSS)5、SQL 注入攻击(SQL injection)6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)7、Session 会话劫持(Session Hijacking…

vue 后端返回文件流,前端导出下载

vue 后端返回文件流&#xff0c;前端导出下载 配置axios响应拦截器 request.interceptors.response.use((response) > {const res response.data// 关键代码: 返回的是文件流if (res instanceof Blob) {return response}if (res.code 200 || res true) {return res} el…

Python使用OpenAI 和大型语言模型对话PDF和图像文本

本文首先介绍文件文本嵌入方法及代码实现&#xff0c;然后介绍和代码实现提取PDF和图像文本应用于大型语言模型。在此基础上&#xff0c;构建回答任何问题的人工智能助手。 创建文本嵌入 文本嵌入是自然语言处理&#xff08;NLP&#xff09;领域的重要工具。它们是文本的数字…

线性代数复习公式整理(自用/持续更新)

第一章 行列式 设A、B为n阶矩阵 ∣ A T ∣ ∣ A ∣ \left | A^T \right | \left | A \right | ​AT ​∣A∣ ∣ A m ∣ ∣ A ∣ m \left | A^m \right | \left | A \right | ^m ∣Am∣∣A∣m ∣ k A ∣ k n ∣ A ∣ \left | kA \right | k^n\left | A \right | ∣kA∣kn∣A…

自动化实践-全量Json对比在技改需求提效实践

1 背景 随着自动化测试左移实践深入&#xff0c;越来越多不同类型的需求开始用自动化测试左移来实践&#xff0c;在实践的过程中也有了新的提效诉求&#xff0c;比如技改类的服务拆分项目或者BC流量拆分的项目&#xff0c;在实践过程中&#xff0c;这类需求会期望不同染色环境…

【BASH】回顾与知识点梳理(十九)

【BASH】回顾与知识点梳理 十九 十九. 循环 (loop)19.1 while do done, until do done (不定循环)19.2 for...do...done (固定循环)19.3 for...do...done 的数值处理(C写法)19.4 搭配随机数与数组的实验19.5 shell script 的追踪与 debug19.6 what_to_eat-2.sh debug结果解析 该…

SpringCloud源码探析(九)- Sentinel概念及使用

1.概述 在微服务的依赖调用中&#xff0c;若被调用方出现故障&#xff0c;出于自我保护的目的&#xff0c;调用方会主动停止调用&#xff0c;并根据业务需要进行对应处理&#xff0c;这种方式叫做熔断&#xff0c;是微服务的一种保护方式。为了保证服务的高可用性&#xff0c;…

即然利用反射机制可以破坏单例模式,有什么方法避免呢?

私有构造方法中添加防止多次实例化的逻辑&#xff1a;在单例类的私有构造方法中&#xff0c;可以添加逻辑来检查是否已经存在实例&#xff0c;如果存在则抛出异常或返回已有的实例。这样即使通过反射创建了新的实例&#xff0c;也能在构造方法中进行拦截。 使用枚举实现单例&a…

rknn3588如何查看npu使用情况

cat /sys/kernel/debug/rknpu/load

choices参数的使用、MTV和MVC的概念、对多的三种创建方式、Ajax技术

一、choices参数的使用 choices它是ORM中常用字段中的参数choices的作用&#xff1a;类似于一些字段&#xff1a;性别、学历、客户来源、是否上学、是否结婚等字段# 针对于一些字段它的情况能够被列举完&#xff0c;像这样的字段&#xff0c;我们在表中存储的时候一般使用choi…

windows环境下编译OpenJDK12

环境&#xff1a;Windows11 目录&#xff1a; 1、下载OpenJDK12源码 下载地址&#xff1a; https://hg.openjdk.org/jdk/jdk12 点击zip下载到本地。 解压到本地。 Tip&#xff1a;注意本地路径中最好不要包含中文或空格。 2、阅读一遍doc/building.html 如果只是想构建J…

白帽黑帽与linux安全操作

目录 白帽黑帽 Linux安全 白帽黑帽 白帽&#xff08;White Hat&#xff09;和黑帽&#xff08;Black Hat&#xff09;通常用于描述计算机安全领域中的两种不同角色。白帽黑客通常被认为是合法的安全专家&#xff0c;他们通过合法途径寻找和修复安全漏洞&#xff0c;帮助企业和…

Linux/centos上如何配置管理samba服务器?

Linux/centos上如何配置管理samba服务器&#xff1f; 1 samba服务相关知识1.1 SMB协议1.2 samba工作原理1.2.1 相关进程1.2.2 samba工作流程1.2.3 samba功能 2 samba服务器安装2.1 利用光驱安装2.2 利用光盘映射文件 3 启动与停止samba服务4 配置samba服务器4.1 samba主配置文件…

解读百威亚太2023上半年财报:啤酒大年百威如何重塑高端化之路?

随着消费者的需求提升&#xff0c;啤酒行业向高端化发展&#xff0c;其中知名度较高的百威亚太、华润啤酒、青岛啤酒、燕京啤酒、嘉士伯等品牌在高端市场持续鏖战&#xff0c;实际成果如何也可以从业绩一探究竟。 以百威亚太为例。8月3日&#xff0c;百威亚太发布2023年上半年…

记录一次electron打包提示文件找不到的解决方法

没有配置files选项 files的作用是配置打包到应用程序的构建资源 就是说如果你想使用项目那个目录下的文件 就得通过files配置一下不然就会报错 json文件或者yml文件会报的错 格式是这样的 "files": ["dist-electron", "dist"],electron打包配…

React配置代理服务器的5种方法

五种方法的介绍 以下是五种在React项目中配置代理服务器的方法的使用场景和优缺点&#xff1a; 1. 使用 http-proxy-middleware 中间件&#xff1a; 使用场景&#xff1a;适用于大多数React项目&#xff0c;简单易用。优点&#xff1a;配置简单&#xff0c;易于理解和维护。…

【C++学习】STL容器——list

目录 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list 迭代器失效 二、list的模拟实现 2.1 模拟实现list 三、list和vector的对比…