c - Missing libgcc_s_dw2-1.dll



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

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

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

  • 独立 MinGW - libgcc_s_dw2-1.dll 位于 MinGW 安装的 bin 子目录中,二进制文件所在的位置(gccg++gdb 等)
  • Qt MinGW - libgcc_s_dw2-1.dll位于子目录中C:QtToolsmingw492_32i686-w64-mingw32lib而MinGW组件的二进制文件位于C:QtToolsmingw492_32i686-w64-mingw32bin内。

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

  • 应用程序正常启动
  • 不会与独立的MinGW安装发生冲突

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

你只需要用你的可执行文件复制这个dll,即:

cp <path-to-qt-install-dir>qt5.7.05.7mingw53_32binlibgcc_s_dw2-1.dll <path-to-dest-dir>

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

ldd <executable> | grep -i qt

注意

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

注2

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

  • 依赖沃克:从这里

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

我对 windeployqt 的结果好坏参半,但如果您有任何插件,它非常适合对该部分进行排序。

相关内容

  • 没有找到相关文章

最新更新