Qt Release build 无法打开 DLL
Posted
技术标签:
【中文标题】Qt Release build 无法打开 DLL【英文标题】:Qt Release build unable to open DLL 【发布时间】:2012-11-20 02:34:39 【问题描述】:虽然我的应用程序使用 QtCreator 2.4.1 在 Qt 4.8.1 的 Debug 模式下运行良好,但它无法在 Release 模式下启动。双击生成的.exe返回:
“应用程序无法正常启动(0XC000007B)。点击确定关闭应用程序。”
在 QtCreator 中运行只是停止(应用程序窗口不出现),最终会返回错误代码:-1073741819
运行 Dependency Walker 将显示:
我已尝试搜索 msvcr90.dll 的位置,它出现在 C:/Windows/winsxd/...下的多个目录中...
此时我应该怎么做才能解决这个问题?我的机器是 64x Windows 7。
【问题讨论】:
【参考方案1】:您应该部署 Qt(和其他一些)库以便以这种方式运行您的应用程序。
dll 文件位于库安装路径的 bin 文件夹中。例如,在我的机器上是:
C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin
因为我使用的是 Qt 的 MSVC2010 版本(而不是 MinGW 版本)。 Dependency Walker 会告诉您必须复制哪些文件。
Qt Creator 应该可以正常运行您的应用程序。你用的是什么版本的Qt? (4.8,MinGW 或 VC2010)
【讨论】:
我相信我正在使用 MSVS2010,因为在构建中它表示“Qt 4.8.1 for Desktop MSVS2010(Qt SDK) Debug/Release”用于发布或调试构建。您的意思是我需要将 dll 文件复制到与我的应用程序 .exe 相同的文件夹中? 是的,我就是这个意思。或者你可以注册他们。但无论如何,在部署应用程序时,将这些 DLL 复制到可执行文件所在的文件夹中会更容易 但是,我发现了相同的两个 DLL 的多个副本,哪一个是正确的版本?到目前为止,我已经猜到它与地域(语言)有关。 语言不需要单独的 DLL(字符串在 .qm 文件中)。 SDK 包含多个 Qt,因为 QtCreator 自带(使其独立于开发的那个),并且根据安装,一个可能有更多 Qt 版本,例如适用于嵌入式设备。 或者您可能将调试与发布版本混淆了。调试版本以 d 结尾。 Ej:QtCored.dll以上是关于Qt Release build 无法打开 DLL的主要内容,如果未能解决你的问题,请参考以下文章
Qt build 无法添加 com dll [collect2: ld returned 5 exit status]
带有 Visual Studio 2013 的 Qt 5.4 - 缺少 QtCored.dll
QT 生成的exe 无法打开 说缺少QTCORED4.DLL文件, 试了很多次,把QTCORED4.DLL文件放到目录下还是不行