Die Prozedur Eintrag Punkt _gxx_personality_v0 nicht gefunden werden konnte in der dynamic link-Bibliothek libstdc++-6.dll Fehler
Gestern habe ich beschlossen, zu laden, zu installieren und zu verwenden versuchen, Allegro-5. Ich auch heruntergeladen, Code::Blocks 12.11 w/der MinGW-compiler. Ich habe alles eingerichtet und installiert ist alles richtig (oder so dachte ich) und habe versucht zu laufen, ein Beispiel-code, um zu sehen, ob es funktionieren würde:
#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;
}
Wenn ich Versuch das Programm kompilieren und ausführen eine Fehlermeldung erscheint, die sagen "Das Verfahren Einstiegspunkt _gxx_personality_v0 nicht gefunden werden konnte in der dynamic link-Bibliothek libstdc++-6.dll." Ich suchte im web für etwa eine Stunde versucht zu finden, eine Lösung für dieses problem, wie ich es Tue, für die meisten Dinge, aber ich kam mit leeren Händen. Ich Frage mich, ob jemand irgendwelche Ideen für ein fixes für dieses problem, wenn ja, lassen Sie mich wissen, so bald wie möglich! Vielen Dank im Voraus!
- Was bedeutet
gcc -v
geben Sie? Passt es zu der version von Allegro, die Sie heruntergeladen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
__gxx_personality_v0
verwendet wird, in die Ausnahmebehandlung der C++ - Bibliothek. MinGW unterstützen können, ein paar verschiedene exception-Modelle, die auf der x86: sjlj (setjmp
/longjmp
) oder ZWERG (DW2). Soweit ich weiß, welches Modell verwendet wird, ist zusammengestellt in den compiler - es ist nicht etwas, das ausgewählt werden kann mit einem Kommandozeilen-option.Den sjlj-Ausnahme-Modell wird ein link zu
__gxx_personality_sj0
, der DW2 Ausnahme-Modell links zu__gxx_personality_v0
. Es scheint, wie Ihr compiler baut für den dw2-Ausnahme-Modell, aber zur Laufzeit ist es Suche nach einemlibstdc++-6.dll
gebaut wurde, dass mit der sjlj-Modell. Sehen Sie, wenn Sie mehrere Versionen vonlibstdc++-6.dll
auf Ihrem system, und sehen, ob kopieren, ein anderes auf dem gleichen Verzeichnis wie das Programm behebt das problem.Können Sie
nm libstdc++-6.dll | grep personality
zu sehen, die Ausnahme 'Persönlichkeit', die die DLL verwenden.nm libstdc++-6.dll | grep personality
es sagen?sjlj
und eines oder mehrere dieser DLLs bauen erwartetdw2
exception-handling. Könnten Sie brauchen, um zu bauen alle Bibliotheken, die Sie selbst, oder Holen Sie sich alternative Bibliotheken bauen, entsprechend der Ausnahmebehandlung für den compiler (oder vielleicht wechseln MinGW-Compiler verwendet dw2 exception handling).nm libstdc++-6.dll
es sagte, dass keine solche Datei, was soll das denn bedeuten? ich habe bereits die Datei aufwindows/system32
Lief ich in diese als gut. Habe einige suchen, die jemand erwähnte, Aufmerksamkeit, ob oder nicht, werden Sie im Debug-oder Release-Modus. Dies gilt für Code::Blocks speziell. Ich fand, ich war im Debug-Modus. Das habe ich geändert auf Release-Modus und mein Programm kompiliert und lief.
Ich bin beunruhigt, aber... Es scheint mir, es sollte funktionieren in beiden Modi, so wie ich es beheben, so dass es wird? Ich habe keine Antwort gibt. Vielleicht hat jemand einen Kommentar mit der Lösung. In der Zwischenzeit, kompilieren Sie und führen Sie in den Release-Modus anstelle des Debug-Modus.
Ich habe gerade ein wenig mad science, entfernt die libstdc++6.dll von MinGW/bin und setzen es in einen anderen Ordner. Dann kopierte ich über die gleiche Datei aus Gimp/bin. Nicht mehr linker-Fehler, stattdessen bekomme ich die Fehlermeldung die Anwendung konnte nicht gestartet werden 🙁 Noch kompiliert und läuft im Release-Modus aber.