所以我安装了Qt addin的Visual Studio 2013(社区版),Qt5库(32位),我试图创建一个独立于所有开发配置的可执行文件(它可能使用静态或共享库) ,我现在并不在乎。)
操作系统:Windows 7,x64。
为此,我将Solution Confguration
visual studio选项从Debug
更改为Release
,并在Configuration Properties -> Linker -> Input -> Additional Dependencies
中添加了所有必需的lib。该应用程序现在仅在我从visual IDE运行时启动,如果我尝试从生成的.exe
启动它,我得到The application was unable to start correctly (0xc000007b)
错误。
我搜索过并发现此错误代码表明存在以下问题之一:
qt-opensource-windows-x86-msvc2013-5.5.0
。),我使用其他一些.DLL这也是32位)。为了检查我的应用程序需要哪些依赖项,我使用 Dependency Walker 应用程序打开了.exe
文件,这就是它向我显示的内容:
也是Qt5Multimedia.dll
和Qt5SerialPort.dll
,我通过将.DLLs
复制到.exe
的同一文件夹中来消除错误。< / em>的
任何想法如何解决这个问题?
答案 0 :(得分:8)
除非标准程序完全失败,否则不应手动执行该操作。已经有Qt Windows部署的标准工具windeployqt
。
它关注Qt DLL依赖关系,制作platforms\qwindows.dll
的副本,并且它还创建了一个使用 Dependency Walker 无法检测到的库的副本,因为图像插件和其他一些在运行时加载。
您甚至不需要在您的环境bin
中拥有Qt PATH
文件夹。最简单的部署:
exe
二进制文件复制到新文件夹cmd
控制台windeployqt
(如果它不在系统PATH
中)并提供您的可执行文件,例如:
c:\Qt\Qt5.5.1-vs2013-x64\5.5\msvc2013_64\bin\windeployqt.exe application.exe
因此,您在该文件夹中拥有所有需要的Qt DLL。当然,您也可能遇到MSVC可再发行组件的问题,但这些应该单独部署并在每个系统上安装一次。
工具windeployqt
有多种选择。它还可以处理qml
相关文件的部署。
如果使用它们,则只能手动复制某些第三方库,例如OpenSSL。
答案 1 :(得分:2)
<强>解决方案:强>
当我深入了解之后,我发现了this回答,在做了回答后指示的内容(我实际上将位于.DLLs
的所有\Qt5.5.0\5.5\msvc2013\bin
复制到我{{1}的文件夹中已找到},错误消息已从.exe
更改为The application was unable to start correctly (0xc000007b)
。
在网上搜索有关此错误的更多信息,我在this回答中发现您还需要Application failed to start because it could not find or load the QT platform plugin “windows”
位于同一位置的platforms
文件夹(位于.exe
{1}}路径)。复制该文件夹后,应用程序启动没有任何问题!!!
现在我只需要从我的应用程序文件夹中删除所有不必要的Qt5.5.0\5.5\msvc2013\plugins
(Dependency Walker不提供有关此内容的非常有用的信息),并且所有部署都已完成。
我在描述问题的同时解决了这个问题,所以我想我会把它留在这里,可以帮助那些有同样问题的人。