libstdc ++ - 找不到6.dll

时间:2011-06-19 17:53:38

标签: c++ mingw libraries

我一直致力于一个项目(一个特定的游戏),我觉得我应该重新开始使用不同的库。因此,在执行此操作时,我重新安装了Code::Blocks并设置了我的新库和包含。

但是到目前为止我在开始你的问题时遇到了一个问题[我的新项目测试是否所有包含工作。这个问题是:libstdc++-6.dll was not found.起初我想知道我是否可以在网上找到这个文件,但它无处可寻(或至少我搜索过的很多地方......)不久之后,我试着加载我的旧的项目,同样的问题再次发生(奇怪...... ._。)我在想它可能是我的编译器,所以我使用了我的旧编译器,它做了同样的事情!此刻我明天就解决了这个问题(今天就是这个问题)

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

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

***** EDIT *****

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

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

(我使用//分隔命令)

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

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

WIN32//
_WINDOWS//

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

-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,一个用于Windows 32位的GNU GCC编译器。 IDE是Codeblocks。另请注意,在项目的“调试和发布”设置中,没有任何内容。

如果有任何帮助,大多数这些setings也是我从Ogre3D Application setup tutorial获得的部分。

11 个答案:

答案 0 :(得分:83)

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

答案 1 :(得分:8)

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

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

如果将此文件复制到与可执行文件相同的目录中,则应该没问题。

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

使用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 ++编译器)。

答案 4 :(得分:1)

我在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

    < / LI>
  • 图书馆搜索路径(-L):

    的/ usr / x86_64的-W64-的mingw32 / SYS-根/的mingw / lib中

    的/ usr / x86_64的-W64-的mingw32 / SYS-根/的mingw / bin中

答案 5 :(得分:1)

对使用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”中

答案 6 :(得分:0)

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

答案 7 :(得分:0)

您只需要在系统环境变量中的路径中添加“ mingw-install-directory” / bin /,就这样!

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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