QT 示例可执行文件无法运行,缺少 QT5Cored.dll

新手上路,请多包涵

QT5Cored.dll 在我的系统上@: C:\Qt\5.4\mingw491_32\bin 文件夹

Analogclock 示例和其他项目将在 IDE 中运行,但不能从创建的 .exe 文件中运行。当 EXE 启动时,会出现 QT5Cored.dll 丢失错误。 QT安装了它,但不知道它在哪里?删除并重新安装了 QT,结果相同。在此处输入图像描述

今天提前下载了。版本:3.3.1,QT 5.4.1(MSCV 2010,32 位),2015 年 2 月 20 日构建。

任何建议表示赞赏。

DLL 填充后的新错误添加到 exe 目录。在此处输入图像描述

原文由 Ashton 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

要在 Qt Creator 之外运行它,您有两种选择:

  1. 将丢失的 DLL 复制到可执行文件所在的目录。例如,如果 analogclock.exec:\examples 中,则将 C:\Qt\5.4\mingw491_32\bin\Qt5Cored.dll 和其他所需的 DLL 复制到 c:\examples 您可能还需要复制插件文件。
  2. C:\Qt\5.4\mingw491_32\bin 添加到 PATH 环境变量中。

有一些方法可以复制丢失的 DLL:

1.使用Windows部署工具(windeployqt.exe)复制所需文件

  1. 以下列方式之一打开命令提示符:
    1. 如果您使用 MSVC 作为编译器,请打开正确的 Visual Studio 命令提示符。例如对于 VS2013 32 位,单击 Start -> Microsoft Visual Studio 2013 -> Visual Studio Tools -> VS2013 x86 Native Tools Command Prompt 。这将打开一个命令提示符,其中 VCINSTALLDIR 环境变量设置正确。 windeployqt.exe 需要此环境变量来复制正确的 Visual C++ 可再发行可执行文件。
    2. 如果您使用 MinGW,只需打开命令提示符。
  2. 添加 Qt 二进制路径和可选的 g++.exe PATH 环境变量的路径。如果您的可执行文件是 32 位,请添加 32 位 Qt 二进制路径,例如: c:\Qt\5.4\msvc2013\bin 。如果您的可执行文件是 64 位,请添加 64 位 Qt 二进制路径,例如: c:\Qt\5.4\msvc2013_64\binwindeployqt.exe 将从该目录复制 DLL,因此请务必不要为 64 位可执行文件设置 32 位 Qt 二进制路径,反之亦然。如果您使用 MinGW,您还需要添加 g++.exe 路径,windeployqt 将从那里复制 lib*.dll。
    ; Example path for MSVC 32-bit
   PATH=c:\Qt\5.4\msvc2013\bin;%PATH%

   ; Example path for MinGW 32-bit, g++.exe is in C:\Qt\Tools\mingw491_32\bin
   PATH=C:\Qt\5.4\mingw491_32\bin;C:\Qt\Tools\mingw491_32\bin;%PATH%

  1. 使用可执行文件作为参数运行 windeployqt.exe 。例如:
    windeployqt.exe C:\Qt\Examples\Qt-5.4\widgets\richtext\build-calendar-Desktop_Qt_5_4_0_MSVC2013_32bit-Debug\debug\calendar.exe

  1. 检查输出是否有错误或警告。以下是没有错误和警告的输出:

在此处输入图像描述

2.手动复制DLL

您必须复制正确的 DLL(32 位或 64 位)。使用 Process Explorer 之类的工具来查找正确的 DLL 路径:

  1. 从 Qt Creator / Visual Studio 运行应用程序。
  2. 打开进程资源管理器。
  3. 在进程资源管理器中
    1. 点击可执行文件,例如 calendar.exe
    2. Ctrl+D 在下方面板中显示加载的 DLL。等效菜单是 View -> Lower Panel View -> DLLs
    3. 在下方面板中,单击 Path 列以按路径排序。
  4. 将 DLL 复制到可执行文件所在的目录。例如在下图中。 DLL 来自 C:\Qt\5.4\msvc2013\bin。

进程浏览器

  1. 如果您的可执行文件使用类似 c:\Qt\5.4\msvc2013\plugins\platforms\qwindowsd.dll 的东西。它也应该被复制。但是从 platforms 目录复制,而不是 plugins 。 Let’s say calendar.exe ’s full path is c:\examples\calendar.exe , then qwindowsd.dll should be copied to c:\examples\platforms\qwindows.dll , not c:\examples\plugins\platforms\qwindows.dll .
  2. 您还需要复制 C++ 运行时库。如果您使用 mingw,您可能需要复制 libgcc_s_dw2-1.dlllibstdc++-6.dlllibwinpthread-1.dll 等等。检查进程资源管理器以确保。如果您使用的是 MSVC,则需要部署运行时(例如: msvcp120.dllmsvcr120.dll )。最后,你的目录结构是这样的:
    c:\examples\calendar.exe
   c:\examples\Qt5Cored.dll
   c:\examples\Qt5Widgetsd.dll
   c:\examples\Qt5Guid.dll
   c:\examples\icudt53.dll
   c:\examples\icuin53.dll
   c:\examples\icuuc53.dll
   c:\examples\libgcc_s_dw2-1.dll   (if using mingw)
   c:\examples\libstdc++-6.dll      (if using mingw)
   c:\examples\libwinpthread-1.dll  (if using mingw)
   c:\examples\platforms\qwindowsd.dll

原文由 fxam 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题