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

时间:2015-02-26 00:52:03

标签: c++ qt

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

Analogclock示例和其他项目将在IDE中运行,但无法从创建的.exe文件运行。启动EXE时,会发生QT5Cored.dll缺失错误。 QT安装了它&不知道它在哪里? 删除&重新安装QT,结果相同。 enter image description here

今天下载的耳机。 版本:3.3.1,QT 5.4.1(MSCV 2010,32 Bit),建于2015年2月20日。

任何建议表示赞赏。

将DLL文件添加到exe目录后出现新错误。 enter image description here

3 个答案:

答案 0 :(得分:28)

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

  1. 将缺少的DLL复制到可执行文件所在的目录。例如,如果analogclock.exe位于c:\examples中,则将C:\Qt\5.4\mingw491_32\bin\Qt5Cored.dll和其他所需的DLL复制到c:\examples。您可能还需要复制插件文件。
  2. C:\Qt\5.4\mingw491_32\bin添加到PATH环境变量。
  3. 有一些方法可以复制丢失的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%  
      
    3. 以您的可执行文件作为参数运行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
      
    4. 检查输出是否有错误或警告。以下是没有错误和警告的输出:

    5. enter image description here

      <强> 2。手动复制DLL

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

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

        1. 如果您的可执行文件使用c:\Qt\5.4\msvc2013\plugins\platforms\qwindowsd.dll之类的内容。它也应该被复制。但是从platforms目录复制,而不是plugins。我们要说calendar.exe的完整路径是c:\examples\calendar.exe,然后应将qwindowsd.dll复制到c:\examples\platforms\qwindows.dll,而不是c:\examples\plugins\platforms\qwindows.dll
        2. 您还需要复制C ++运行时库。如果您使用的是mingw,则可能需要复制libgcc_s_dw2-1.dlllibstdc++-6.dlllibwinpthread-1.dll等。检查Process Explorer以确定。如果您使用的是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
          

答案 1 :(得分:3)

对我来说,一个简单的解决方案是将QTDIR C:\ Qt \ 5.4 \ msvc2017_64 \添加到Windows系统变量中。

  1. 在Windows搜索中,键入“ env”,然后按“编辑系统环境变量”
  2. 在下面点击“环境变量”
  3. 在“系统变量”列表中,按“新建...”
  4. 添加QTDIR作为变量名,并在Qt目录下添加编译器的目录名:C:\Qt\5.4\mingw491_32(在您情况下)

答案 2 :(得分:0)

fxam 给出的答案是深入,全面的答案。我已经尝试了提供的方法,并且它们起作用了!

只需添加一条注释,就MinGW64而言,应在“ C:\ Qt \ Qt5.13.1 \ 5.13.1 \ mingw73_64 \ bin”目录中运行windeplyqt.exe。

DrumM 的答案是最简单的解决方案。它被提到为1.2。在 fxam 的答案中。