[Solution]
我想在未安装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
如果您遗漏了任何信息,请告诉我们。 感谢
答案 0 :(得分:11)
要分发您的应用程序,您需要复制 DLL (仅需要 DLL )。
复制必要的 DLL
<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并删除调试DLL (仅用于在调试中编译)。 / p>
请注意,
debug dlls
以“d.dll”结尾,例如: Qt5Core.dll 和 Qt5Cored.dll 或 Qt5Concurrent.dll 和 Qt5Concurrentd.dll ,不应复制带有“d.dll”的结尾。
结构看起来应该是这样的(例子):
只需要一些 DLL mingw ,所以我建议使用Dependency Walker 2.2
结果应如下所示(并非所有dll都需要,这可能因项目类型而异):
感谢:
为@MartinBeckett +1,向我展示了找到 DLL 所需的程序。
+1 @WouterHuysentruit,感谢我指出的应用程序,我发现 mingw \ plugins 文件夹的内容应直接进入应用程序文件夹。
< / LI>@WouterHuysentruit我会认为你的答案是正确的,但你刚才说,所以我做了一个更简单的解释。无论如何,谢谢。
答案 1 :(得分:2)
“microsoft visual c ++运行时库:此应用程序已请求运行时以不寻常的方式终止它”
这可能是一个普通的bug,或者有时混合不兼容的dll 使用你的exe上的(免费)depends程序检查它实际使用的dll - 它可能没有链接所有的Qt
有些Qt库是在运行时从插件文件夹加载的,主要是图像格式和数据库连接 - 但是它们不会给出这个错误
答案 2 :(得分:0)
windeployqt(随QT 5.2+提供)应该(大多数?)工作