Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ libstdc&x2B+-找不到6.dll_C++_Mingw_Libraries - Fatal编程技术网

C++ libstdc&x2B+-找不到6.dll

C++ libstdc&x2B+-找不到6.dll,c++,mingw,libraries,C++,Mingw,Libraries,我一直在做一个项目(具体来说是一个游戏),我觉得我应该从不同的库开始。因此,在执行此操作时,我重新安装并设置了我的新库和include 但是到目前为止,我在启动u[我的新项目以测试是否所有的工作时遇到了一个问题。这个问题是:libstdc++-6.dll没有找到。起初我想知道我是否可以在线找到这个文件,但它却找不到(或者至少在我搜索过的许多地方……)不久之后,我尝试加载我的旧项目,但同样的问题再次发生(wierd…)。我想这可能是我的编译器,所以我使用了我的旧编译器,它做了同样的事情!此时我将问

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

但是到目前为止,我在启动u[我的新项目以测试是否所有的工作时遇到了一个问题。这个问题是:
libstdc++-6.dll没有找到。
起初我想知道我是否可以在线找到这个文件,但它却找不到(或者至少在我搜索过的许多地方……)不久之后,我尝试加载我的旧项目,但同样的问题再次发生(wierd…)。我想这可能是我的编译器,所以我使用了我的旧编译器,它做了同样的事情!此时我将问题推迟到明天(即今天)解决

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

在Windows Vista 32位上,我使用代码::块和MinGW作为编译器

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

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

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

-static-libstdc++//
-static-libgcc//
-Wl,--enable-auto-image-base//
-Wl,--add-stdcall-alias//
-Wl,--enable-auto-import//
(我使用
/
来分隔命令)

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

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

-static-libstdc++//
-static-libgcc//
-Wl,--enable-auto-image-base//
-Wl,--add-stdcall-alias//
-Wl,--enable-auto-import//
在linker->link库中,我有各种指向扩展名为
.a
的文件的链接,这些文件包括Bullet PHysics、Ogre3D和SFML

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

我的编译器是MinGW,一个用于windows 32位的GNU GCC编译器。IDE是代码块。还要注意的是,在项目的调试和发布设置中,什么都没有


这些设置大部分也是从有帮助的IF中得到的。

< P>我知道,这是C++运行库。它取决于你用来创建程序的编译器(一个新版本将包含一些C++ 0x的东西,一个旧版本可能不会。例如,它取决于编译器和它的版本)。

如果使用MinGW,则应使用此编译器文件夹中的libstdc++-6.dll。MinGW/bin文件夹应是在计算机上搜索它的位置


如果你将文件复制到你的可执行文件的同一目录,则应该是正确的。

如果你在Windows上使用明文编译C++代码,你可能会添加选项>代码>静态LBGCC 和静态LBSTDC++<代码>,以静态地连接C和C++标准库,从而消除了需要携带任何单独的COP的情况。在Windows中,库的.Version管理是一个难题,因此我发现这种方法是创建Windows二进制文件的最快速、最干净的解决方案。

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

我尝试使用flag-static libstdc++但是这对我来说不起作用。
我在中找到了解决方案:

我使用Fedora20下的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 -墙-c-fmessage长度=0

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

交叉G++编译器

  • 命令:g++

  • 所有选项:-I/usr/x86_64-w64-mingw32/sys root/mingw/include-O3 -墙-c-fmessage长度=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


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

我没有注意到这些选项,并添加了:
-static libgcc-static libstdc++

我仍然得到了错误,最终意识到我使用的是gcc,并将编译器更改为g++并删除了
-stdc++和-lm
,所有链接都很好

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


我不知道为什么以前的作者用GST-+STDC + +。我不认为没有理由不使用G++来与STDC++自动链接……据我所知,提供其他好处(毕竟是C++编译器)

4种解决方法

Eclipse >“Project”->“Projices”->“C/C++构建”->“设置”>“MIWW C++链接器”->“错误链接”>“链接标志”(“添加”-static)

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

  • 将“{{安装MinGW的路径}}/bin”添加到Windows环境变量“path”中,然后重新启动eclipse,最后重新编译

  • 将文件“libstdc++-6.dll”复制到运行*.exe文件的路径,然后重新运行
    -static-libstdc++//
    -static-libgcc//
    -Wl,--enable-auto-image-base//
    -Wl,--add-stdcall-alias//
    -Wl,--enable-auto-import//