Qt工程使用vs打开,调试、运行都没有问题,但直接点击exe却无法运行

本文档记录了一位开发者在使用Qt工程时遇到的问题:exe文件无法直接运行,即使包含了所有依赖dll。通过进入调试模式加载dll,观察vs2019调试信息,发现dll加载成功,但问题依然存在。作者尝试将dll复制到exe同级目录,问题仍未解决,暗示可能存在其他因素导致exe运行失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt系列文章目录

前言

Qt工程使用vs打开,调试、运行都没有问题,但直接点击exe却无法运行,而且工程中所需要的dll全部包含

一、定位原因

exe是否缺少依赖的dll

1. 首先进入调试模式,加载dll

在这里插入图片描述
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\CallCartDll.exe”。已加载符号。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\ntdll.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\kernel32.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\KernelBase.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\vcruntime140d.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\msvcp140d.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\ucrtbased.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\vcruntime140_1d.dll”。
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\CartDll.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\libmmd.dll”。
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\msvcr110.dll”。
“CallCartDll.exe”(Win32): 已卸载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\libmmd.dll”
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\libifportmd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\libifcoremd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已卸载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\libifportmd.dll”
“CallCartDll.exe”(Win32): 已卸载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\libifcoremd.dll”
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\svml_dispmd.dll”。
“CallCartDll.exe”(Win32): 已卸载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\svml_dispmd.dll”
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\libmmd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\libifportmd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\libifcoremd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已卸载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\libifportmd.dll”
“CallCartDll.exe”(Win32): 已卸载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\libifcoremd.dll”
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\svml_dispmd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已卸载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\svml_dispmd.dll”
“CallCartDll.exe”(Win32): 已加载“C:\Users\ASUS\anaconda3\Library\bin\libifportmd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\user32.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\win32u.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\gdi32.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Users\ASUS\anaconda3\Library\bin\libifcoremd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\gdi32full.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\imagehlp.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\msvcp_win.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\ucrtbase.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\advapi32.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\msvcrt.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\sechost.dll”。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\rpcrt4.dll”。
“CallCartDll.exe”(Win32): 已加载“E:\osg\work\CARTDLL_demo_20220520\CallCartDll\svml_dispmd.dll”。模块已生成,不包含符号。
“CallCartDll.exe”(Win32): 已加载“C:\Windows\System32\imm32.dll”。

int main()
{
       HINSTANCE hlib=LoadLibrary(TEXT("CartDll.dll"));
       if(!hlib)
       {
           cout<<"open dll error!"<<endl;
       }

       cartfun cart1=(cartfun)GetProcAddress(hlib,"cart");

2. 根据vs2019调试信息依赖的dll如上所示

我把相关dll全部复制到CallCartDll.exe 同级目录下,点击exe,还是无法正常运行,但在工程中调试、运行都没有问题

在这里插入图片描述

3. 查看调试信息

查看调试信息,发现CartDll…dll加载成功了
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值