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

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

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加载成功了
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在介绍VS工程Qt工程之前,我需要确认一下您是指将Visual Studio(VS)的工程转换为Qt工程吗?如果是的话,可以使用Qt Visual Studio Tools插件来实现这个转换过程。 Qt Visual Studio Tools是一个由Qt官方提供的插件,它可以在Visual Studio中集成Qt开发环境,使得在Visual Studio中进行Qt项目的开发更加方便。通过这个插件,您可以将现有的VS工程转换为Qt工程,并在Visual Studio中进行Qt项目的开发和调试。 下面是将VS工程转换为Qt工程的步骤: 1. 首先,确保您已经安装了Qt Visual Studio Tools插件。您可以在Visual Studio的扩展和更新管理器中搜索并安装该插件。 2. 打开Visual Studio,并打开您要转换的VS工程。 3. 在Visual Studio的菜单栏中,选择“Qt”菜单,然后选择“Convert Project to Qt Project”。 4. 在弹出的对话框中,选择要转换的项目,并选择目标Qt版本。 5. 点击“Convert”按钮开始转换过程。转换过程可能需要一些时间,具体时间取决于项目的大小和复杂度。 6. 转换完成后,您将看到一个新的Qt项目在Visual Studio中打开。您可以在其中进行Qt项目的开发和调试。 需要注意的是,转换过程可能会有一些限制和注意事项。由于VSQt的项目结构和构建系统的差异,一些功能和设置可能无法完全转换或需要手动调整。因此,在转换完成后,您可能需要检查和调整项目的设置和配置,以确保项目能够正常编译和运行。 希望以上信息对您有所帮助!如果您还有其他问题,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值