程序入口点_gxx_personality_v0无法位于动态链接库libstdc ++中 - 6.dll错误

Tob*_*ing 6 c++ mingw codeblocks windows-vista allegro5

昨天我决定下载,安装并尝试使用Allegro 5.我还下载了Code :: Blocks 12.11 w/MinGW编译器.我设置了所有内容并正确安装了所有内容(或者我认为)并尝试运行示例代码以查看它是否可行:

#include <stdio.h>
#include <allegro5/allegro.h>

int main(int argc, char **argv){

   ALLEGRO_DISPLAY *display = NULL;

   if(!al_init()) {
      fprintf(stderr, "failed to initialize allegro!\n");
      return -1;
   }

   display = al_create_display(640, 480);
   if(!display) {
      fprintf(stderr, "failed to create display!\n");
      return -1;
   }

   al_clear_to_color(al_map_rgb(0,0,0));

   al_flip_display();

   al_rest(10.0);

   al_destroy_display(display);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译并运行程序时,会出现一个错误消息框,指出"程序入口点_gxx_personality_v0无法位于动态链接库libstdc ++ - 6.dll中." 我在网上搜索了大约一个小时试图找到解决这个问题的方法,就像我对大多数事情一样,但我空手而归.我想知道是否有人对此问题的任何修复有任何想法,如果是这样,请尽快告诉我!提前致谢!

Mic*_*urr 11

__gxx_personality_v0用于C++库的异常处理.MinGW可以在x86上支持几个不同的异常模型:sjlj(setjmp/longjmp)或DWARF(DW2).据我所知,将使用哪个模型编译到编译器中 - 它不是可以使用命令行选项选择的东西.

sjlj异常模型将链接到__gxx_personality_sj0,DW2异常模型链接到__gxx_personality_v0.看起来你的编译器正在为dw2异常模型构建,但在运行时它发现了一个libstdc++-6.dll用sjlj模型构建的.查看libstdc++-6.dllyouR系统上是否有多个版本,并查看是否将另一个版本复制到程序修复问题的同一目录中.

您可以使用nm libstdc++-6.dll | grep personality查看DLL正在使用的"个性"异常.