【发布时间】:2017-09-15 01:04:47
【问题描述】:
我正在学习 QT 和 c++。设法创建一个简单的应用程序来监控串行端口。从 Qt 的内部运行一切正常。但是....当我关闭 Qt 时,转到调试文件夹并双击 .exe 文件,没有任何反应。我想与我的同事分享这个应用程序——也许只是压缩所有内容并将其发送给他们,这样他们就可以解压缩到一个文件夹并直接使用该 exe。无法弄清楚如何做这个基本的事情。没有适合像我这样的新手的教程。我尝试安装 Inno Setup,但不确定如何从那里继续。
编辑: 我将 comport.exe 复制到发布文件夹并尝试了 windeployqt.exe Comport.exe 然后得到结果: (我的应用名称是 comport.exe)。
G:\QT\build-ComPort-Desktop_Qt_5_9_1_MinGW_32bit-Debug\release>C:\Qt\5.9.1\mingw53_32\bin\windeployqt.exe ComPort.exe
G:\QT\build-ComPort-Desktop_Qt_5_9_1_MinGW_32bit-Debug\release\ComPort.exe 32 bit, debug executable
Adding Qt5Svg for qsvgicond.dll
Skipping plugin qtvirtualkeyboardplugind.dll due to disabled dependencies.
Direct dependencies: Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
All dependencies : Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
To be deployed : Qt5Core Qt5Gui Qt5SerialPort Qt5Svg Qt5Widgets
Warning: Cannot find GCC installation directory. g++.exe must be in the path.
Updating Qt5Cored.dll.
Updating Qt5Guid.dll.
Updating Qt5SerialPortd.dll.
Updating Qt5Svgd.dll.
Updating Qt5Widgetsd.dll.
Updating libGLESV2d.dll.
Updating libEGLd.dll.
Updating D3Dcompiler_47.dll.
Updating opengl32sw.dll.
Patching Qt5Cored.dll...
Creating directory G:/QT/build-ComPort-Desktop_Qt_5_9_1_MinGW_32bit-Debug/release/iconengines.
Updating qsvgicond.dll.
Creating directory G:/QT/build-ComPort-Desktop_Qt_5_9_1_MinGW_32bit-Debug/release/imageformats.
Updating qgifd.dll.
Updating qicnsd.dll.
Updating qicod.dll.
Updating qjpegd.dll.
Updating qsvgd.dll.
Updating qtgad.dll.
Updating qtiffd.dll.
Updating qwbmpd.dll.
Updating qwebpd.dll.
Creating directory G:/QT/build-ComPort-Desktop_Qt_5_9_1_MinGW_32bit-Debug/release/platforms.
Updating qwindowsd.dll.
Creating G:\QT\build-ComPort-Desktop_Qt_5_9_1_MinGW_32bit-Debug\release\translations...
Creating qt_bg.qm...
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_da.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_es.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_gd.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_uk.qm...
之后什么都没有发生。我打开发布文件夹,发现 comport.exe 包含更多文件(dll 和文件夹)。我双击exe仍然没有任何反应。
编辑:对于将我的问题标记为“已经有答案”的人 - 我的问题是关于 Windows 而不是 Unix/Linux 和 Mac。
【问题讨论】:
-
了解windeployqt
-
不要这样做,调试模式下的可执行文件与发布模式不同。必须在Qt Creator中改变编译模式,在release模式下编译。
-
@GeneCode 错误,您应该将项目配置为 Release,构建然后使用
windeployqt。此外,您可能需要将libgcc_s_dw2-1.dll、libstdc++-6.dll和libwinpthread-1.dll从qtfolder/5.9/mingw.../bin复制到您的exe 文件夹。 -
windeployqt 默认假定您提供发布模式,因此您可以获取这些 dll,如果您想对模式调试执行相同操作,您应该输入:
windeployqt --debug your_executable -
@Macias 它有效,谢谢。如果您写答案,那么我可以接受。这些库的手动副本是我所缺少的。还有 eyllanesc,谢谢你的 cmets。