libstdc ++ - 找不到6.dll

问题描述 投票:40回答:8

我一直在研究一个项目(一个特定的游戏),我觉得我应该重新开始使用不同的库。因此,当我这样做时,我重新安装Code::Blocks并设置我的新库和包括。

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

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

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

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

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

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

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

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

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

c++ mingw libraries
8个回答
86
投票

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


8
投票

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

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

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


5
投票

只需从mingw目录中删除libstdc ++ - 6.dll.a \ libstdc ++。dll.a就可以解决这个问题。

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


3
投票

当我使用带有以下选项的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 ++编译器)。


2
投票

对于使用eclipse进行c / c ++但运行* .exe文件并出错的windows用户很有用:“缺少libstdc ++ 6.dll”

4种解决方法

  1. Eclipse - >“Project” - >“Properties” - >“C / C ++ Build” - >“Settings” - >“Tool Settings” - >“MinGW C ++ Linker” - >“Miscellaneous” - >“Linker flags”(添加'-static'到它)
  2. 将'{{你的MinGW的安装路径}} / bin'添加到当前用户环境变量 - Windows中的“Path”,然后重启eclipse,最后重新编译。
  3. 将'{{你的MinGW的安装路径}} / bin'添加到Windows环境变量 - “Path”,然后重启eclipse,最后重新编译。
  4. 将文件“libstdc ++ - 6.dll”复制到运行* .exe文件的路径,然后重新运行。 (这不是一个好方法)

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


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

Cross 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

Cross G ++ Linker

  • 命令: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-根/ MinGW的/ lib中 的/ usr / x86_64的-W64-的mingw32 / SYS-根/ MinGW的/ bin中

0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.