1

我有一个 Windows 7 64 位系统,安装了最新的 MinGW(32 位)以及 Qt 5.5 SDK(也是 32 位),它也附带了自己的 MinGW。由于我不是唯一使用该系统的人,因此我无法删除独立的 MinGW。

我的项目正在使用qmake并且是一个普通的 C 项目(不是 C++)。一切都很好,但是当我尝试在命令行中执行我的二进制文件时,我发现应用程序由于libgcc_s_dw2-1.dll系统缺失而无法启动。

在调查了这个问题后,我发现独立的 MinGW 和随 Qt SDK 一起提供的那个都有提到的 DLL。

  • 独立 MinGW -libgcc_s_dw2-1.dll位于bin二进制文件所在的 MinGW 安装的子目录内(gccg++gdb
  • Qt MinGW -libgcc_s_dw2-1.dll位于C:\Qt\Tools\mingw492_32\i686-w64-mingw32\lib子目录内,而 MinGW 组件的二进制文件位于C:\Qt\Tools\mingw492_32\i686-w64-mingw32\bin.

我想知道如何正确设置我的PATH变量,以便:

  • 应用程序正常启动
  • 与独立 MinGW 安装没有冲突

只是一个旁注:我已经在 SO 上查看了其他帖子,但无法找到解决方案(也许我错过了它)。我也试过LIBS += -static,但结果是一样的。

4

1 回答 1

0

您只需要使用可执行文件复制此 dll,即:

cp <path-to-qt-install-dir>\qt5.7.0\5.7\mingw53_32\bin\libgcc_s_dw2-1.dll <path-to-dest-dir>

您会发现您有其他依赖项,以查看您可以使用哪些其他部门:ldd <your-executable>. 您只需复制 qt 特定的 dll,您可以通过以下方式查看:

ldd <executable> | grep -i qt

笔记

您可以静态链接它:链接器命令,如-static-libgccor -static,但我认为您开始遇到 LGPL 问题,而且您可能需要从源代码静态编译 qt - 无法回忆这个特定文件。

笔记2

抱歉 ldd 适用于 linux,刚刚意识到您有 Windows,在这种情况下,您可以使用以下之一或两者:

  • 依赖步行者:从这里

  • <path-to-qt-bin-folder>\windeployqt.exe <path-to-your-executable>

我对 windeployqt 的结果好坏参半,但如果你有任何插件,它对于排序该部分非常有用。

于 2016-07-06T07:34:40.227 回答