Der Prozedur-Einstiegspunkt __gxx_personality_sj0 konnte nicht gefunden werden in ...
Habe ich es geschafft (irgendwie) cross-compile Qt5 mit dem Mingw-w64 Project compiler für 32-bit-Windows. Alle Bibliotheken installiert wurden, um ~/i686-w64-mingw32
.
Habe ich ein CMake-basierten Qt-Projekt, das ich bin versucht zu cross-kompilieren. Von folgenden diese Anweisungen, ich in der Lage gewesen, um das Projekt zu kompilieren. So weit So gut.
Leider beim ausführen der resultierenden Programme unter Windows, das ich am Ende immer eine Fehlermeldung:
"Das Verfahren Einstiegspunkt __gxx_personality_sj0 nicht gefunden werden konnte in der dynamic link-Bibliothek [Anwendungsname].exe"
* [Anwendungsname] ist der vollständige Pfad für die ausführbare Hauptdatei
Ich habe gehört, dass diese Art von problem kann manchmal verursacht werden, durch das mischen von Bibliotheken zusammengestellt, die mit verschiedenen Versionen von MinGW. Aber alles auf dieser Maschine (alle Bibliotheken und ausführbaren) wurden zusammengestellt, die von den gleichen compiler (der i686-w64-mingw32
toolchain).
Außerdem finde ich es seltsam, dass die Fehlermeldung beschwert sich über den Eintrag Punkt fehlt die ausführbare Datei der Anwendung, anstelle eines von der .dll
- Dateien.
Was könnte die Ursache dieser Fehler und was kann getan werden, um es zu beheben?
PATH=/mein/Pfad;%PATH%
InformationsquelleAutor der Frage Nathan Osman | 2013-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Suche den Speicherort der falschen Bibliothek:
Der Weg ist die Antwort.
unterscheidet sich von der %PATH% in der Befehlszeile (siehe IDE-Einstellungen). In
diesem Fall setzen "libstdc++-6.dll" in einer batch-Datei und läuft
die batch von der in der IDE sollte zeigen, welche bestimmte Instanz
die Bibliothek Ihr Programm aufnehmen.
Meine persönliche Lösung:
In meiner Erfahrung, MS-Windows' - Art und Weise der Auswahl der Lage innerhalb der %PATH% können sehr unregelmäßig sein. Letztes mal habe ich noch eine source Datei mit einer einzigen Funktion und enthalten, dass die Funktion in meinen code. Das Programm würde immer wählen die falsche libstdc++-6.dll, auch wenn ich alles gelöscht, was den code der Funktion und Links nur die 'return' - Anweisung. Jedes mal, die Funktion wurde auskommentiert (ausgeschlossen), würde das Programm wieder normal ausgeführt werden. Ich vermute, dass manchmal Windows wählt PFAD vom "System variables" und vermeidet "Benutzer-Variablen" PFAD (Ihr Windows-Konto ist WEG) für einige Grund.
InformationsquelleAutor der Antwort MilfordTea
In das Ende, es stellte sich heraus, dass das problem verursacht wurde durch eine eigensinnige
libstdc++-6.dll
irgendwo in$PATH
. Nachdem sichergestellt wurde, dass die Kopie, gebaut von Mingw-w64 wurde im selben Verzeichnis wie die Anwendung, alles funktioniert.InformationsquelleAutor der Antwort Nathan Osman