【问题标题】:libstdc++-6.dll not found未找到 libstdc++-6.dll
【发布时间】:2011-09-18 06:40:51
【问题描述】:

我一直在做一个项目(具体来说是一个游戏),我觉得我应该从不同的库重新开始。因此,在执行此操作时,我重新安装了 Code::Blocks 并设置了我的新库和包含。

但是到目前为止,我在启动 u[ 我的新项目以测试所有包含的内容是否有效时遇到了问题。这个问题是:libstdc++-6.dll was not found.起初我想知道我是否可以在网上找到这个文件,但是找不到它(或者至少我搜索过的很多地方......)不久之后,我尝试加载我的旧项目,并且同样的问题再次发生(奇怪... ._.)我在想它可能是我的编译器,所以我使用了我的旧编译器,它做了同样的事情!此刻我把问题推迟到明天(也就是今天)

所以我的问题是:如果其他人有这个问题,你会如何解决?

我在 Windows Vista 32 位上使用 Code::Blocks 和 MinGW 作为编译器。

*****编辑*****

这是我项目中的构建选项。请注意,这些是项目中的设置,而不是全局编译器:

在(项目名称)->编译器设置->其他选项:

(我使用//来分隔命令)

-mthreads//
-fmessage-length=0//
-fexceptions//
-fident//

在(项目名称)->编译器设置->#define:

WIN32//
_WINDOWS//

在(项目名称)->链接器设置->其他链接器选项:

-static-libstdc++//
-static-libgcc//
-Wl,--enable-auto-image-base//
-Wl,--add-stdcall-alias//
-Wl,--enable-auto-import//

在链接器->链接库中,我有各种指向扩展名为 .a 的文件的链接,这些文件包括 Bullet PHysics、Ogre3D 和 SFML

在搜索目录中,我有指向 MinGW/bin 和 MinGW/lib 目录的链接,以及指向不同库的其他链接。

我的编译器是 MinGW,一个适用于 32 位 Windows 的 GNU GCC 编译器。 IDE是代码块。另请注意,在项目的 Debug 和 Release 设置中,没有任何内容。

如果有帮助的话,这些设置中的大部分也是我从Ogre3D Application setup tutorial 获得的。

【问题讨论】:

  • 嘿,我刚刚删除了 Ogre3D 设置,程序运行正常,没有任何错误。我认为它在我使用的命令中触发了那个 dll 错误。_.
  • 再一次,我刚开始一个一个地读回文件,我发现包装器btOgre是这个dll错误的原因。我的问题是,这是将 Bullet Physics 与食人魔一起使用所必需的。我将尝试找到一种正确使用它的方法。
  • 嘿,我决定使用 OgreBullet 而不是 btOgre。我自己在 codeBlocks 中构建了它,它运行得很完美。感谢您的支持,并为所有不必要的麻烦感到抱歉。 :)

标签: c++ mingw libraries


【解决方案1】:

据我所知,这是 C++ 运行时库。因此,这取决于您用于创建程序的编译器(新版本将包含一些 C++0x 内容,例如旧版本可能不会。这取决于编译器及其版本)。

如果你使用 MinGW,那么你应该使用这个编译器文件夹中的 libstdc++-6.dll。 MinGW/bin 文件夹应该是在您的计算机上搜索它的地方。

如果你把这个文件复制到你的可执行文件所在的目录下,应该没问题。

【讨论】:

  • 是的,这就是我遇到的问题。在我的旧项目中,将我的编译器改回旧版本后,它运行良好。但是如果我要在同一个编译器下创建一个新项目,我会得到那个错误......这真的没有意义它以前不需要该文件,但现在它确实......而且我从来没有第一次拥有那个文件地方,我发现编译器版本(旧的和新的)完全一样,好像我刚刚重新安装它一样......
  • 通过简单地在编译命令中添加“-static”,问题就解决了。
【解决方案2】:

如果您使用 MingW 在 Windows 上编译 C++ 代码,您可能希望添加选项 -static-libgcc-static-libstdc++ 以静态链接 C 和 C++ 标准库,从而无需携带任何单独的副本那些。库的版本管理在 Windows 中是一个难题,因此我发现这种方法是创建 Windows 二进制文件的最快和最干净的解决方案。

【讨论】:

  • 它与问题中所说的问题相同:libstdc++-6 not found...您将它们添加到链接器选项对吗?当编译器设置具有库时,它也会有所不同吗?还是项目设置?
  • @Molmasepic:您最初的问题非常含糊。这是编译时、链接时还是运行时错误?谁发出来的?你做的最后一件事是什么,你用什么命令来构建项目?
  • 哦,对不起,我忘记了...它在运行时,所以它是运行时错误。再次对此感到抱歉...编译进行得很顺利,但是当应用程序启动时,就出现了上述错误。
  • @Molmasepic:您能否发布有关您正在使用的编译器和平台以及您用于构建项目的命令的详细信息?
  • 我尝试在 MinGW 4.7.1 上使用 -static-libgcc 和 -static-libstdc++,但它说:mingw32-g++.exe: error: unrecognized command line option '-static-libstdc++'
【解决方案3】:

只需从 mingw 目录中删除 libstdc++-6.dll.a \ libstdc++.dll.a 即可解决此问题。

我尝试使用标志 -static-libstdc++ 但这对我不起作用。 我在以下位置找到了解决方案:http://ghc.haskell.org/trac/ghc/ticket/4468#

【讨论】:

    【解决方案4】:

    我在 Fedora 20 下使用 Eclipse 和 MinGW 进行交叉编译。 使用这些设置,程序将不再要求 libstdc++-6.dll。

    项目类型 - 跨 GCC

    交叉设置

    • 前缀:x86_64-w64-mingw32-
    • 路径:/usr/bin

    跨 GCC 编译器

    • 命令:gcc

    • 所有选项: -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -O3 -Wall -c -fmessage-length=0

    • 包括:/usr/x86_64-w64-mingw32/sys-root/mingw/include

    跨 G++ 编译器

    • 命令:g++

    • 所有选项:-I/usr/x86_64-w64-mingw32/sys-root/mingw/include -O3 -Wall -c -fmessage-length=0

    • 包括:/usr/x86_64-w64-mingw32/sys-root/mingw/include

    跨 G++ 链接器

    • 命令:g++ -static-libstdc++ -static-libgcc

    • 所有选项:-L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -L/usr/x86_64-w64-mingw32/sys-root/mingw/bin

    • 库搜索路径(-L):

      /usr/x86_64-w64-mingw32/sys-root/mingw/lib

      /usr/x86_64-w64-mingw32/sys-root/mingw/bin

    【讨论】:

    • 请解释更多,例如:为什么它对你有用?
    【解决方案5】:

    当我使用带有以下选项的 gcc 使用 MinGW 进行编译时,也会发生此错误: -lstdc++ -lm,而不是 g++

    我没有注意到这些选项,并补充说:-static-libgcc -static-libstdc++

    我仍然得到错误,终于意识到我在使用 gcc,并将编译器更改为 g++ 并删除了-stdc++ and -lm,并且一切都很好。

    (我使用的是 LINK.c 而不是 LINK.cpp...使用 make -pn | less 来查看所有功能!)

    我不知道为什么之前的作者使用 gcc 和 -stdc++。我没有看到任何不使用 g++ 的理由,它将自动与 stdc++ 链接......据我所知,它提供了其他好处(毕竟它是 c++ 编译器)。

    【讨论】:

    • 您指定的是哪个版本的 C++ 标准?
    【解决方案6】:

    我将libstdc++-6.dll文件放在生成exe文件的同一个文件夹中。

    【讨论】:

    • 也可以通过在系统环境变量的路径中添加“mingw-install-directory”/bin/来解决
    【解决方案7】:

    您只需将“mingw-install-directory”/bin/ 添加到您的系统环境变量中的路径...就是这样!!

    【讨论】:

      【解决方案8】:

      对使用 eclipse for c/c++ 但运行 *.exe 文件并收到错误消息的 Windows 用户有用:“缺少 libstdc++6.dll”

      4 种方法来解决它

      1. Eclipse ->“项目”->“属性”->“C/C++ 构建”->“设置”->“工具设置”->“MinGW C++ 链接器”->“杂项”-> “链接器标志”(添加“-static”)

      2. 将'{{安装 MinGW 的路径}}/bin' 添加到当前用户环境变量 - Windows 中的“路径”,然后重新启动 eclipse,最后重新编译。

      3. 将'{{安装MinGW的路径}}/bin'添加到Windows环境变量-“路径”,然后重启eclipse,最后重新编译。

      4. 将文件“libstdc++-6.dll”复制到运行*.exe文件的路径,然后重新运行。 (这不是个好办法)

      注意:文件“libstdc++-6.dll”在文件夹'{{安装MinGW的路径}}/bin'

      【讨论】:

      • 如果执行第 3 步,则不需要第 2 步。将其添加到系统路径使其可供所有用户使用,因此第 2 步毫无意义。
      • 我的 MinGW64/bin 文件夹在 Windows 10 x64 下没有这样的 .dll :(
      【解决方案9】:

      我有同样的问题。我修好了它。我正在使用 Codeblocks,我将 .cpp 文件保存在桌面上,而不是将其保存在 MinGW 所在的 Codeblocks 文件中。所以我将所有 dll 文件从 MinGW>>bin 文件夹复制到我的 .cpp 文件的保存位置。

      【讨论】:

        【解决方案10】:

        我刚遇到这个问题..我刚刚将 MinGW\bin 目录添加到路径环境变量中,它解决了这个问题。

        【讨论】:

          【解决方案11】:

          你也可以复制你exe文件所在目录下的dll文件

          【讨论】:

            【解决方案12】:

            我也有这个问题。我在命令提示符下编译并使用了标志-static。 我之前的命令: “g++ test.cpp -o test.exe” 之后: "g++ test.cpp -o test.exe -static"

            【讨论】:

              猜你喜欢
              • 2017-11-30
              • 2019-05-04
              • 1970-01-01
              • 1970-01-01
              • 2015-06-05
              • 2018-07-05
              • 1970-01-01
              相关资源
              最近更新 更多