在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.hqwc.cn/news/62103.html

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

相关文章

(贪心) 剑指 Offer 14- II. 剪绳子 II ——【Leetcode每日一题】

❓剑指 Offer 14- II. 剪绳子 II 难度&#xff1a;中等 给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长度的 m 段&#xff08;m、n 都是整数&#xff0c;n > 1 并且 m>1 &#xff09;&#xff0c;每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*.…

如何让你的视频在 TikTok上变得火爆?

TikTok凭借巨大的用户量和商业价值&#xff0c;它从来不缺优质内容。如何在众多内容中脱颖而出获得关注&#xff0c;这并不简单。和泛流量账号不同&#xff0c;商业账号的目的更加明确&#xff0c;也就是说&#xff0c;商业账号并不一定要以高流量最为唯一的追求目标&#xff0…

uniapp 扩展组件 uni-forms 的表单验证之 validateFunction 只响应一次

uniapp 扩展组件 uni-forms 的表单验证之 validateFunction 只响应一次 问题代码官方说明参考资料 问题代码 直接从官方示例中复制过来改的。为了演示 <template><view><uni-forms ref"form" :modelValue"formData" :rules"rules&qu…

【TensorFlow】P0 Windows GPU 安装 TensorFlow、CUDA Toolkit、cuDNN

Windows 安装 TensorFlow、CUDA Toolkit、cuDNN 整体流程概述TensorFlow 与 CUDA ToolkitTensorFlow 是一个基于数据流图的深度学习框架CUDA 充分利用 NIVIDIA GPU 的计算能力CUDA Toolkit cuDNN 安装详细流程整理流程一&#xff1a;安装 CUDA Toolkit步骤一&#xff1a;获取CU…

opencv基础53-图像轮廓06-判断像素点与轮廓的关系(轮廓内,轮廓上,轮廓外)cv2.pointPolygonTest()

点到轮廓的距离 在 OpenCV 中&#xff0c;函数 cv2.pointPolygonTest()被用来计算点到多边形&#xff08;轮廓&#xff09;的最短距离&#xff08;也 就是垂线距离&#xff09;&#xff0c;这个计算过程又称点和多边形的关系测试。该函数的语法格式为&#xff1a; retval cv2…

多路复用select实现

select函数 int select(int nfds, fd_set *readfds,fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);nfds:是三个集合中编号最高的文件描述符&#xff0c;加上1readfds/writefds/exceptfds: 可读集合/可写集合/异常集合timeout NULL&#xff1a;永久阻塞0&…

flink kafka消费者如何处理kafka主题的rebalance

背景&#xff1a; 我们日常使用kafka客户端消费kafka主题的消息时&#xff0c;当消费者退出/加入消费者组&#xff0c;kafka主题分区数有变等事件发生时&#xff0c;都会导致rebalance的发生&#xff0c;此时一般情况下&#xff0c;如果我们不自己处理offset&#xff0c;我们不…

Android Studio实现滑动图片验证码

源代码链接 效果&#xff1a; MainActivity package com.example.slidingpattern;import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.Moti…

photoshop生成器引入到electron项目(electron与photoshop建立通信)

Photoshop引入了nodejs&#xff0c;在启动的时候&#xff0c;通过pipe调起nodejs运行时核心generator-builtin&#xff0c;通过KLVR机制与ps进行通信和交互&#xff0c;同时会加载用户编写的扩展。 这里记录一下引入时的踩坑过程 generator-core就是它的源码&#xff0c;elect…

栈和队列(二) 队列操作详解及栈与队列的相互实现

文章目录 四、队列1、什么是队列2、队列的基本操作Queue.hQueue.c初始化队列队尾入队列队头出队列获取队列头部元素获取队列队尾元素获取队列中有效元素个数检测队列是否为空&#xff0c;如果为空返回非零结果&#xff0c;如果非空返回0销毁队列 五、设计循环队列六、栈与队列的…

整数中1出现的次数(从1到n整数中1出现的次数)

解题思路1&#xff1a; 设定整数点&#xff08;如1、10、100等等&#xff09;作为位置点i&#xff08;对应n的各位、十位、百位等等&#xff09;&#xff0c;分别对每个数位上有多少包含1的点进行分析。 第一步&#xff1a;对n进行分割&#xff0c;分为两部分&#xff1a;高位…

标准化归一化 batch norm, layer norm, group norm, instance norm

Layer Normalization - EXPLAINED (in Transformer Neural Networks) Layer Normalization - EXPLAINED (in Transformer Neural Networks) 0~4min:什么是multi-head attention 5~7min:layer norm图示 7~9min:公式举例layer norm 9:54-end:layer norm的代码示例 group n…