打包QT的exe程序,解决Qt5Guid.dll,QtNetwork.dll等找不到的问题

在Windows下使用Qt5.12开发项目后,通过设置为Release模式并编译,可以在release目录找到EXE文件。但直接运行会报错,因为缺少库。解决方法是创建一个新目录,放入EXE和所需库。利用windeployqt工具自动部署系统缺失的库,再添加私有库,即可正常运行。最后将文件夹压缩,分享给他人。

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

解决问题:在用qt写完一个项目之后,要生成一个exe文件,让他人使用---打包程序,


工具:windows下的qt5.12

1.发布:发布这个选项的,也就是左下角改debug为release,设置后,点击编译build会在release中发现exe文件,直接执行exe会报错;缺失各种库

 


2.在项目的build编译目录(非源码目录),单独建立一个文件夹--eg.demo,然后放置exe,然后复制文件目录路径

开始运行,查找如下程序,使用cd /d +路径,锁定到demo目录下

 

然后使用 windeployqt + 程序名 敲击回车

 所需要的库,除开系统没有自带的,系统存在的库将会自动补全到该目录;

 补上自己的私有库,再次运行就解决问题啦!

 压缩为压缩包,就可以给他人使用了~

参考:https://blog.csdn.net/qq_39054069/article/details/96481902

### 解决 VS 中 Qt5WidgetsD.lib 导致 LNK1112 错误的问题 LNK1112 错误通常表示链接器检测到目标模块的架构不匹配。具体来说,可能是由于尝试将 x86 架构的目标文件与 x64 架构的目标文件混合编译而导致的[^1]。 #### 问题分析 此错误的核心在于构建环境中使用的库和可执行文件之间的架构冲突。如果项目配置为生成 x64 可执行文件,则需要确保所有依赖项(如 Qt 库)也是针对 x64 的版本。反之亦然,对于 x86 配置,应仅使用 x86 版本的库。 以下是具体的解决方案: --- ### 设置 Visual StudioQt 的兼容性环境 #### 修改系统变量以支持自定义安装路径 为了使 `vsvars32.bat` 文件能够正确设置开发环境变量,需将其复制至指定目录并调整系统的 `VS100COMNTOOLS` 路径指向实际位置。例如,在 D:\Softwares\VS2010\Common7\Tools 下放置该批处理脚本可以有效初始化命令提示符下的工具链环境。 #### 正确选择平台工具集 在项目的属性页中导航到 **Configuration Properties -> General** 并确认以下选项: - 将 **Platform Toolset** 设定为适合当前操作系统的值 (e.g., v100 对于 Visual Studio 2010)。 接着进入 **C/C++ -> Code Generation**, 查看运行时库的选择是否一致;推荐统一采用多线程调试 DLL (/MDd) 或其发布模式对应版(/MD),这有助于减少潜在的 ABI 不兼容风险。 --- ### 确保 Qt 工具包的一致性 下载或重新编译符合预期 CPU 类型的 Qt SDK 是必要的步骤之一。假设正在构建的是一个桌面应用程序,并且希望它能在 AMD64 上正常运作,则应该选用预编译好的 MinGW-w64 或 MSVC20xx-x64 组件作为基础框架的一部分。 另外还需注意一点:当切换不同的子体系结构(比如从 Win32 到 X64)之后记得清理旧有对象(.obj,.pch等中间产物), 同样也要删除最终输出(exe/dll/lib)再重试整个流程, 这样才能彻底排除残留数据干扰的可能性. ```batch :: 清理工程前先关闭IDE实例以防锁定某些必要资源 del /S /Q "$(SolutionDir)\$(ConfigurationName)\*.obj" rmdir /S /Q "$(TargetDir)" ``` 上述脚本片段展示了如何利用 Windows 批量指令自动移除特定目录内的临时文件夹及其内容。 --- ### 核查链接器输入参数 最后一步便是仔细审查 Linker Settings 下面关于 Additional Dependencies 字段的内容列表是否存在矛盾之处——即混杂了不同位数形式的静态/动态连接档案名称。假如发现类似下面这样的组合存在: - Debug Mode: `Qt5Core.lib;Qt5Gui.lib;Qt5Network.lib;...;Qt5Widgetsd.lib` - Release Mode: `Qt5Cored.lib;Qt5Guid.lib;Qt5Networkd.lib;...;Qt5Widgets.lib` 那么就应当依据实际情况修正成完全相同的命名约定方式来规避此类隐患的发生概率. --- ### 总结 通过以上方法可以有效地解决因架构差异引发的 LNK1112 错误。关键是保持整个软件栈各组成部分之间高度协调一致性,无论是编译器还是第三方类库均如此。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoxilang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值