我想在未安装
QtSDK
的计算机上运行使用 Qt
创建的应用程序。
我尝试将
DLL's
从 BIN
文件夹复制到我的项目的发布版本中,但没有成功。
dll's
文件夹d:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin
d:\projects\mybrowser\mybrowser-build-Desktop_Qt_5_0_1_MinGW_32bit-Release\release
without Qt
without Qt
中,我安装了vcredist_sp1_x86.exe
并尝试运行我的应用程序browsertest.exe
microsoft Visual C++ 运行时库:此应用程序已请求 运行时以不寻常的方式终止它
问:我真正想知道的是:
如何在未安装 Qt 的其他计算机(Windows)上运行 Qt 内置的应用程序?
文件夹:
Qt/Mingw:
文件.pro:
QT += webkitwidgets network core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = browsertest
TEMPLATE = app
RC_FILE = browser.rc
SOURCES += main.cpp\
mybrowser.cpp
HEADERS += mybrowser.h
FORMS += mybrowser.ui
如果您错过任何信息,请告诉我。 感恩
要分发您的应用程序,您需要复制 DLLs(仅需要 DLLs)。
复制所需的DLLs
<DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\
或 <DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\bin\
例如:
C:\Qt\Qt5.2.0\5.2.0\mingw48_32\
或 C:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin
粘贴您的应用程序的文件夹。
然后复制
<DRIVE>:\Qt\Qt<Version_qt>\<Version_qt>\mingw<Version_mingw>\plugins
里面的文件夹
例如:
C:\Qt\Qt5.2.0\5.2.0\mingw48_32\plugins
粘贴您的应用程序的文件夹。
注意:在此示例(如下)中,需要从不同位置复制 DLL 并删除 Debug DLLs(仅用于在 Debug 中编译)。
注意
以“d.dll”结尾,例如:Qt5Core.dll和Qt5Cored.dll或Qt5Concurrent.dll和Qt5Concurrentd.dll,以“d.dll”结尾不应该被复制。debug dlls
结构应如下所示(示例):
只需要一些 DLLs mingw,所以我建议使用 Dependency Walker 2.2
结果应如下所示(并非需要所有 dll,这可能因项目类型而异):
感谢:
+1,向我展示了查找所需 DLLs 的程序。
+1 @WouterHuysentruit,感谢我指出的应用程序,我发现 mingw\plugins 文件夹的内容应该直接进入应用程序文件夹。
@WouterHuysentruit 我认为你的答案是正确的,但你刚才说了,所以我做了一个更简单的解释。还是谢谢你了。
“microsoft Visual C++ 运行时库:此应用程序已请求运行时以不寻常的方式终止它”
这要么是一个普通的错误,要么有时是不兼容的 dll 的组合
使用 exe 上的(免费)depends 程序来检查它实际使用的 dll - 它可能没有链接所有 Qt
一些 Qt 库在运行时从插件文件夹加载,主要是图像格式和数据库连接 - 但它们不会给出此错误
windeployqt(随 QT 5.2+ 一起交付)应该完成(大部分?)工作