Qt部署;程序入口点..找不到



我移植了一个现有的Qt4应用程序Qt5,并为这个应用程序添加了一些额外的(简单的)功能。

旧应用程序附带

  • libgcc_s_dw2_1.dll
  • libusb-1.0.dll
  • mingwm10.dll
  • QtCore 4.dll
  • QtCred4.dll
  • QtGuid.dll

现在,通过QtCreator,我可以运行修改后的应用程序,但在准备部署时会出现问题。我在.exe上使用了dependency walker,并在我的可执行文件目录中包含了一个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
  • Qt5Guid.dll
  • Qt5Guid.dll
  • Qt5Widgets.dll
  • Qt5Widgetsd.dll
  • QtCred4.dll

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

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

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

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

如果有帮助:在Projects->qmake-build-config:Release->Effective qmake call I have 下

qmake.exe D:Producttest_util.pro -r -spec win32-g++

如果需要更多的信息来让任何事情变得更清楚,请留下评论。

我在Qt 5.4.2上遇到了同样的问题,因为我稍微修改了代码,根据OpenGL添加了新的功能。我所做的是使用Qt的Window部署工具。

  1. 创建一个文件夹并将二进制文件放入其中
  2. 根据二进制文件的版本,使用cmd发出以下命令:
    • windeployqt--发布名称_Of_Binary
    • windeployqt—调试名称_Of_Binary

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

最新更新