Qt部署;该过程的入口点未找到...

5

我已经将一个现有的Qt4应用程序移植到了Qt5,并在此应用程序中添加了一些额外的(简单)功能。

旧应用程序附带以下文件:

  • libgcc_s_dw2_1.dll
  • libusb-1.0.dll
  • mingwm10.dll
  • QtCore4.dll
  • QtCored4.dll
  • QtGui.dll

现在,从QtCreator中我能够运行我的修改后的应用程序,但是在准备部署时出现了问题。我使用了dependancy walker来检查我的.exe文件并在可执行文件目录中包含了大量的DLL文件。

  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • IEShims.dll
  • libgcc_s_dw2-1.dll
  • libGLESv2.dll
  • libstdc++-6.dll
  • libusb-1.0.dll
  • libwinpthread-1.dll
  • mingwm10.dll
  • Qt5Core.dll
  • Qt5Cored.dll
  • Qt5Gui.dll
  • Qt5Guid.dll
  • Qt5Widgets.dll
  • Qt5Widgetsd.dll
  • QtCored4.dll

(是的,由于DLL文件,项目大小现在非常大,但在我的用例中这不是问题。)

最后,它没有抱怨缺少DLL文件。尝试执行.exe文件时显示的错误消息是:

动态链接库Qt5Core.dll中找不到过程入口点?testBit@QBitArray@@QBE_NH@Z

我从未尝试在Qt Creator之外执行Qt应用程序,所以我真的不知道该怎么办。

如果有帮助:

在“项目” -> “qmake构建配置”下:发布 -> 有效的qmake调用为:

qmake.exe D:\Product\test_util.pro -r -spec win32-g++

如果需要更多信息来让任何事情更清晰,请在评论区留言。

你可以包含Qt的调试版本和发布版本的dll文件。但是根据你的配置,你只能选择其中一个版本。这将减小你的软件包大小。 - vahancho
@vahancho 噢,原来d后缀是这个意思。谢谢。 - chwi
你确定 DLL 版本与正在构建的二进制文件匹配吗?即 Qt 5 和 Qt 5.1 有不同的 DLL。 - laurent
@returnthis.lau_ 我使用Qt安装中的DLL,即Qt5.2。 - chwi
233个讨厌QT的理由之一,哈哈,这是一个无法构建分发应用程序的IDE :D - user889030
1个回答

3
我在修改代码以添加基于OpenGL的新功能后,在Qt 5.4.2上遇到了同样的问题。我所做的是使用Qt的Windows部署工具

  1. 创建一个文件夹并将您的二进制文件放入其中
  2. 使用cmd发出以下命令,具体取决于您拥有的二进制文件版本:
    • windeployqt --release Name_Of_Binary
    • windeployqt --debug Name_Of_Binary

根据您拥有的Qt Creator版本,您可能需要手动将lib*.dll复制到目录中。此错误不存在于Qt 5.4.2中,但存在于早期版本中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接