在Windows上部署Qt5应用程序的问题

bil*_*ial 2 deployment dll qt dependencies visual-studio-2013

所以我安装了Qt addin的Visual Studio 2013(社区版),Qt5库(32位),我正在尝试创建一个独立于所有开发配置的可执行文件(它可能使用静态或共享库,我不真的很在意这一点).

操作系统:Windows 7,x64.

为此,我将Solution Confgurationvisual studio选项更改DebugRelease,并添加所有必需的库Configuration Properties -> Linker -> Input -> Additional Dependencies.应用程序现在只在我从visual IDE运行它时启动,如果我尝试从生成的.exeI got The application was unable to start correctly (0xc000007b)error 启动它.

我搜索过并发现此错误代码表明存在以下问题之一:

  • 32位应用程序尝试加载64位DLL(不是我的情况,我认为,Qt DLL是32位(我已经安装使用此.exe:.qt-opensource-windows-x86-msvc2013-5.5.0),我使用其他一些也是32位的.DLL).
  • 有一些丢失的DLL.(我确实将所有必要的Qt DLL复制到最终可执行文件的同一个文件夹中).

为了检查我的应用程序需要哪些依赖项,我.exe使用Dependency Walker应用程序打开了文件,这就是它向我显示的内容:

应用程序依赖项

在这个列表也是Qt5Multimedia.dllQt5SerialPort.dll,我通过复制.DLLs与相同的文件夹中的错误摆脱.exe.

任何想法如何解决这个问题?

Ore*_*era 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
    
    Run Code Online (Sandbox Code Playgroud)

因此,您在该文件夹中拥有所有需要的Qt DLL.当然,您也可能遇到MSVC可再发行组件的问题,但这些应该单独部署并在每个系统上安装一次.

该工具windeployqt有多种选择.它还可以处理qml相关文件的部署.

如果使用它们,则只应手动复制某些第三方库,例如OpenSSL.