Le point d'entrée de la procédure GXX personality sj0 n'a pas pu être localisé dans…

j'ai réussi (d'une manière ou d'une autre) à compiler Qt5 avec le compilateur du projet Mingw-w64 pour Windows 32 bits. Toutes les bibliothèques ont été installés à ~/i686-w64-mingw32.

J'ai un projet Qt basé sur CMake que j'essaie de compiler. Par la suite ces instructions, j'ai pu faire compiler le projet. So far So good.

Malheureusement, lors de l'exécution du binaire résultant sur Windows, j'ai une erreur:

"Le point d'entrée de procédure __gxx_la personnalité_sj0 n'a pas pu être localisé dans la bibliothèque de liens dynamiques [application_name].exe"!--4-->

* [application_name] est le chemin complet de l'exécutable principal

j'ai entendu dire que ce type de problème peut parfois être causé par le mélange de bibliothèques compilées avec différentes versions de MinGW. Mais tout sur cette machine (toutes les bibliothèques et l'exécutable) ont tous été compilé par le même compilateur (le i686-w64-mingw32 chaîne d'outils).

en outre, je trouve étrange que l'erreur se plaint du fait que le point d'entrée manque dans l'exécutable de l'application au lieu de l'un des .dll fichiers.

Qu'est-ce qui pourrait causer cette erreur et que peut-on faire pour y remédier?

17
demandé sur Nathan Osman 2013-02-15 10:30:49

2 réponses

trouver l'emplacement de la mauvaise bibliothèque:

  • ouvrir l'invite de commande.
  • Tapez " libstdc++-6.dll "et cliquez sur "Entrer"
  • une boîte de message doit apparaître avec un chemin et un message:c:/somefolder/someapp/.../ libstdc++-6.dll ce fichier n'a pas de programme associé... etc, etc. le chemin est la réponse.
  • gérer votre application à partir d'un IDE: % PATH% in IDE pourrait être différent du% PATH % dans l'invite de commande (voir paramètres IDE). Dans cette affaire, mettre " libstdc++-6.dll" dans un fichier batch et en cours d'exécution le lot à l'intérieur de L'IDE doit montrer quelle instance particulière de la bibliothèque que votre programme capte.

Ma solution personnelle:

  • ouvrez "Propriétés du système"- > "Variables D'environnement" (dans Windows 7, dans mon cas) et assurez-vous que les deux variables %PATH (celle pour votre compte et à l'échelle du système variable % PATH%) commence par c:\mingw\bin (ou n'importe quel chemin que vous avez pour la bibliothèque). De plus, vous devrez peut-être redémarrer votre IDE pour qu'il reprenne le nouveau chemin.

d'après mon expérience, la façon de MS Windows de choisir l'emplacement dans le %PATH% peut être très erratique. La dernière fois, j'ai ajouté un fichier source avec une seule fonction et j'ai inclus cette fonction dans mon code. Le programme choisissait toujours le mauvais libstdc++-6.dll même quand je supprimez tout le code de la fonction et ne laissez que l'instruction "return". Chaque fois que cette fonction était commentée (exclue), le programme fonctionnait de nouveau normalement. Je soupçonne que parfois Windows choisit le chemin à partir des" Variables système "et évite le chemin des" variables utilisateur " (le chemin de votre compte Windows) pour une raison quelconque.

15
répondu MilfordTea 2014-01-12 22:44:57

En fin de compte, il s'est avéré que le problème a été causé par un rebelle libstdc++-6.dll quelque part dans $PATH. Après s'être assuré que la copie construite par Mingw-w64 était dans le répertoire de l'application, tout a fonctionné.

11
répondu Nathan Osman 2013-02-15 08:18:50