Compilation

undefined reference to " __gxx_personality_v0"

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour ! Alors , j'ai téléchargé le moteur Nazara afin de tester et puis apres avoir regler quelques problemes d'includes dans son moteur j'en arrive a un probleme d'undefined reference to "__gxx_personality_v0". Pour avoir lu quelque sujets sur des forums on conseil de mettre mingw a jour .. ce que j'ai fait ( reinstallation de code::blocks + telechargement de la derniere version de mingw ). Toujours la meme erreur ..

edit :: version de code::blocks = 16.01 compilo = GCC 4.9

Merci pour vos réponse ca fait plus d'une heure de bute sur ce probleme.

Édité par Zérotisme

+0 -0
Auteur du sujet

Merci de ta reponse , apres avoir parler avec lynix il m'a envoyer des liens vers son nightlies code::block ainsi que son compilo utiliser .. toujours le meme probleme. Je vais donc recompiler nazara moi meme ..

+0 -0
Staff

Salut,

Pour que ça marche, il faut que tu ais exactement la même version du compilateur qui a été utilisé pour compiler les dlls de Nazara. Si ce n'est pas le cas (ou que tu n'en es pas sûr(e)), il faut recompiler Nazara toi-même.

victorlevasseur

Ça me parait grandement étonnant. Si il fallait que toutes les DLL que l'on utilise soient compilées par le même compilateur, on aurait du mal à distribuer quoique ce soit pour un utilisateur lambda…

Ça sent plus le problème d'include manquant, qui fait que le linker n'arrive pas à trouver la ou les dll contenant __gxx_personality_v0. Mais là, difficile de t'aider sans plus d'infos sur ton environnement et les instructions d'édition de liens que tu utilises…

I don't mind that you think slowly, but I do mind that you are publishing faster. – W. Pauli

+0 -0

Ça me parait grandement étonnant. Si il fallait que toutes les DLL que l'on utilise soient compilées par le même compilateur, on aurait du mal à distribuer quoique ce soit pour un utilisateur lambda…

C'est pourtant le cas en C++ (pas le même ABI suivant les compilateurs et leurs versions également) mais pas en C (c'est pour cela que l'on peut facilement utiliser des bibliothèques C ou systèmes avec n'importe quel compilateur). Et je ne vois pas le rapport avec la redistribution d'un programme.

Édité par victorlevasseur

+0 -0
Staff

Et je ne vois pas le rapport avec la redistribution d'un programme.

Vraiment ? o_O Imagine qu'il soit impossible (ou plutôt complètement inutile) de distribuer des objets précompilés parce qu'inutilisables par d'autres programmes et incapables d'utiliser les DLL déjà présentes sur le système. Installer le moindre truc (dont un compilateur d'ailleurs) deviendrait une galère incroyable. Tu le dis toi-même:

C'est d'ailleurs chiant quand tu dois te taper la compilation de quelque chose de complexe comme gtkmm sous Windows…

I don't mind that you think slowly, but I do mind that you are publishing faster. – W. Pauli

+0 -0

Un exemple avec Qt : http://download.qt.io/development_releases/qt/5.6/5.6.0-rc/. Ils doivent fournir les versions MSVC 2015 et 2013 (avant, il y avait aussi 2012 et 2010), en version 32 et 64. Avant, il y avait aussi les versions OpenGL et DirectX.

Autre exemple avec gtkmm : https://wiki.gnome.org/Projects/gtkmm/MSWindows, qui est fournit uniquement pour MingW (donc non compatible MSVC).

Et non, ce n'est pas un truc impossible. Juste une contrainte a prendre en compte quand on utilise ou fournit une lib C++. (Ou alors on utilise une API C, ou alors on build soit même)

+0 -0

Les dlls sont rarement partagée sous Windows (et sous Linux, tout l'OS est censé utiliser la même version du compilateur C++) et souvent mises à côté du programme. Les autres dépendances (des dlls fournies) sont souvent des dlls avec une API en C, donc cela ne pose pas de problème.

+0 -0
Auteur du sujet

L'histoire de retro-compatibilité semble probable etant donné que lynix n'utilisais pas ( pour sa video de demo avec compilation code::block ) la "version" officiel de code::block mais une nightlies qui si je comprend bien est un code::block avec des "settings" différents selon le build … Par contre , j'ai bien pris le build nightlies de CB que lynix utilise dans sa video ( celle du 19 fevrier 2015 je crois ) ainsi que la version mingw. Il met les deux liens en telechargement sous sa video et pourtant rien a faire.

J'ai donc tester avec la version "officielle" de code::block , le nightlies a lynix , le nightlies le plus recent ainsi que plusieurs version de GCC/mingw.

Comme erreur j'ai pu avoir un panopli d'errors concernant la gestion d'erreur SJLJ ou quelque chose dans ce genre .. j'ai donc pris une version SJLJ qui me rapporte a chaque fois a la premiere erreure ( __gxx_personality_v0 ).

J'ai lynix en MP qui tente de trouver le probleme avec moi et il viens de me dire qu'il avais preparer un build de son moteur different pour code:block qui devrait deja regler quelques problemes en esperant que ca regle le mien.

Édité par Zérotisme

+0 -0
Auteur du sujet

Probleme résolu , merci a tous , mais surtout a Lynix pour son soutiens.

Pour ceux qui auraient le meme probleme : il faut recompiler les libs externe dans le workspace de code::block du projet nazara.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte