C++ Project不会执行丢失的DLL,不确定这是什么意思?

C++ Project不会执行丢失的DLL,不确定这是什么意思?,c++,codeblocks,sfml,C++,Codeblocks,Sfml,首先,IDE不是我的强项。我脑海中的一个问题是:编译器设置和项目构建设置是一样的吗?因为除了调试和发布之外,它们都有编译器、链接器设置和搜索目录选项 errors(s) The procedure entry point _gxx-personality-v0 could not be located in the dynamic link library sfml-graphics-2.dll, sfml-window-2.dll, sfml-system-2.dll, sfml-audio

首先,IDE不是我的强项。我脑海中的一个问题是:编译器设置和项目构建设置是一样的吗?因为除了调试和发布之外,它们都有编译器、链接器设置和搜索目录选项

errors(s)

The procedure entry point _gxx-personality-v0 could not be located in the dynamic link library sfml-graphics-2.dll, sfml-window-2.dll, sfml-system-2.dll, sfml-audio-2.dll
(即使我已经将它们放在project.exe旁边的project bin文件夹中)

细节

inst dir    C:\Program Files (x86)\CodeBlocks    
CodeBlocks  17.12.0.1 
SFML        SFML-2.5.0-windows-gcc-7.3.0-mingw-32-bit
Build       Debug
C++14       (Have g++ follow the C++14 ISO C++ language standard)  
//
Linker Libaries   (SFML add dependencies must be in this order)
                               sfml-graphics        
                               sfml-window
                               sfml-system
                               sfml-audio
Compiler                C:\Program Files (x86)\CodeBlocks\SFML-2.5.0\include
Linker                  C:\Program Files (x86)\CodeBlocks\SFML-2.5.0\lib
Tool Chain Executables  C:\Program Files (x86)\CodeBlocks\MinGW
//

C:\Program Files (x86)\CodeBlocks\MinGW\bin                                (copied ddls to project bin folder)

C:\Program Files (x86)\CodeBlocks\SFML-2.5.0\bin                            (copied ddls to project bin folder)

看起来项目已编译,但无法执行。

尝试在设置->编译器->链接器设置(选项卡)->其他链接器选项下输入编译器标志
-lstdc++
。这将链接到您的项目源,并将
\u gxx-personality-v0
纳入范围

请注意,此错误:

The procedure entry point _gxx-personality-v0 could not be located in the dynamic link library sfml-graphics-2.dll, sfml-window-2.dll, sfml-system-2.dll, sfml-audio-2.dll
就是说,它无法在您链接的任何DLL中找到函数定义,也就是说,您的DLL链接工作正常,这只是一个非范围函数定义的例子

其他参考资料:


  • 看看你能不能在这里找到答案。它解释了哪个库包含符号以及你需要做什么。@b珀斯,谢谢我正在研究相关的帖子,但我真的不知道你在暗示什么?找不到的符号
    \uuuuuugxx\u personality\u v0
    libstdc++
    中定义,可能缺少了。试着把
    void*\uuuuugxx\uv0并查看链接错误是否消失。@b珀斯它不起作用,将symbol void指针放在全局程序作用域中并重新生成,但什么也没有,在可执行文件的本地项目bin文件夹中有一个libstdc++-6.dll,我是从mingw bin复制的,应该在那里吗?我注意到有一个双下划线,不知道
    \u gxx\u personality\u v0
    是否更好?另外,我会在我的电脑上搜索libstdc++并得到回复。谢谢你的建议/答案。我添加了编译器标志,但它没有解决任何问题,很抱歉我不理解,但为什么是它附带的代码块mingw,不包含libstd++但包含libc++-6?编号可能是/相关的,但你应该检查你需要的函数。很高兴知道链接至少是成功的,每个SFML DLL是否都调用该未限定作用域的函数?我不太理解这种依赖关系。