libstdc++-6.dll未找到。

71
我一直在开发一个项目(具体来说是一个游戏),感觉应该使用不同的库重新开始。所以我重新安装了 Code::Blocks 并设置了新的库和包含文件。
但现在我遇到了一个问题,无法启动我的新项目以测试所有的包含文件是否有效。这个问题是:libstdc++-6.dll未找到。起初我想知道是否可以在网上找到这个文件,但它似乎无处可寻(或者至少是我搜索过的很多地方都没有...)。之后,我尝试加载我的旧项目,同样的问题又出现了(奇怪... ._.)。我想这可能是我的编译器问题,所以我使用了旧的编译器,结果还是一样!此时我把这个问题推迟到明天再解决(也就是今天)。
所以我的问题是:如果其他人遇到这个问题,你会如何解决?
我在 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,是用于Windows 32位的GNU GCC编译器。IDE是Codeblocks。还请注意,在项目的Debug和Release设置中,没有任何内容。

大部分这些设置都是从 Ogre3D应用程序设置教程中获得的,如果有帮助的话。


嘿,我刚刚删除了Ogre3D的设置,程序没有任何错误地运行。我想这可能是我使用的命令中触发了那个dll错误。 - Molmasepic
嗨,我又回来了。我刚刚开始逐个重新添加文件,发现包装器btOgre是这个dll错误的原因。我的问题是,使用Bullet Physics和ogre需要它。我将尝试找到一种正确使用它的方法。 - Molmasepic
嘿,我决定使用OgreBullet而不是btOgre。我在codeBlocks中自己构建了它,一切都很完美。感谢您的支持,对于所有不必要的麻烦,我很抱歉。 :) - Molmasepic
15个回答

0
我曾经遇到同样的问题,但是我已经把它解决了。我使用的是Codeblocks,将我的".cpp"文件保存在桌面上,而不是保存在MinGW所在的Codeblocks文件夹中。因此,我把MinGW>>bin文件夹中的所有dll文件复制到我的.cpp文件所在的位置。

0
我也遇到了这个问题。我在命令提示符中编译,并使用了-static标志。 我的命令如下: "g++ test.cpp -o test.exe" 之后变成了: "g++ test.cpp -o test.exe -static"

0

只需将 LIBMPFR-4.DLL 复制到 MinGW/bin/ 目录下,然后就可以直接运行代码了。

我刚刚解决了这个问题,我认为这是编译器的一个 bug。


0
如果您正在使用CMake,请在您的CMakeLists.txt文件中包含以下行:
    add_link_options(-static -static-libgcc -static-libstdc++)

这将为您的项目启用静态链接。


-1

我曾经遇到过同样的问题,后来通过以管理员身份运行编译后的exe文件解决了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接