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

2024-02-26

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

#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;
}

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


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

sjlj 异常模型将链接到__gxx_personality_sj0,DW2异常模型链接到__gxx_personality_v0。看起来你的编译器正在为 dw2 异常模型构建,但在运行时它发现了一个libstdc++-6.dll这是用 sjlj 模型构建的。看看你是否有多个版本libstdc++-6.dll在您的系统上,看看将另一个文件复制到与您的程序相同的目录是否可以解决问题。

您可以使用nm libstdc++-6.dll | grep personality查看 DLL 正在使用哪种异常“个性”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在动态链接库 libstdc++-6.dll 中定位过程入口点 _gxx_personality_v0 错误 的相关文章

随机推荐