IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques C++ Discussion :

dll : connaitre la version de mingw utilisée.


Sujet :

Bibliothèques C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut dll : connaitre la version de mingw utilisée.
    Bonjour,

    Je suis actuellement en train de porter un exécutable sous Windows et après avoir, tant bien que mal, compilé toutes les bibliothèques nécessaires, je me retrouve avec un petit problème de dll.

    En effet, lorsque je lance l'exécutable, j'ai une petite erreur :
    Le point d'entrée de procédure __gxx_personality_v0 est introuvable dans la bibliothèque de liens dynamiques libstdc++-6.dll
    Que j'avais réussi à résoudre en changeant le fichier libstdc++-6.dll utilisé par un autre mais un peu plus tard j'ai eu une erreur (de tête ) :
    Le point d'entrée de procédure __gxx_personalitysj_v0 est introuvable dans la bibliothèque de liens dynamiques libstdc++-6.dll
    Ces erreurs viendraient du fait que les dll utilisées n'auraient pas été compilée avec la même version de mingw.

    J'aimerais donc savoir si vous connaissiez une méthode pour savoir quelles dll ont été compilées avec quelle version de mingw afin de savoir lesquelles remplacer/recompiler.

  2. #2
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Bonjour,
    Citation Envoyé par Neckara Voir le message
    ...
    J'aimerais donc savoir si vous connaissiez une méthode pour savoir quelles dll ont été compilées avec quelle version de mingw afin de savoir lesquelles remplacer/recompiler.
    Sous Linux, les programmes sont compilés au format ELF. Ce format possède plusieurs sections d'entête (section header) dont la section .comment contient le nom et la version du compilateur.
    Si le programme n'est pas "striper", on peut accéder à cette entête à l'aide de plusieurs méthode (readelf, objdump ou strings). Exemple avec strings :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strings -a libtest.so | grep -i gcc
    ou avec objdump :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objdump -s --section .comment libtest.so
    Vu que mingw contient les commandes readelf, objdump et strings, je pense (par pur spéculation) qu'elles ont été adapté au format des binaires Windows.
    Cela ne coute rien d'essayer

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Merci pour votre réponse.

    Kwariz m'avait donné une solution temporaire consistant à rechercher dans la dll grâce à (de tête) grep __gxx_personality_sj.

    J'essayerais votre méthode dès que possible

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    D'après objdump, il semblerait que les .dll soient au format
    file format pei-i386
    strings quant à lui permet d'avoir une réponse de grep beaucoup plus lisible qu'en utilisant cat.

  5. #5
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Citation Envoyé par Neckara Voir le message
    D'après objdump, il semblerait que les .dll soient au format ...
    Il ne t'affiche pas le contenu de la section .comment parce qu’il ne trouve justement pas de section nommée .comment .
    Ne connaissant pas l'entête du fichier, pas la peine de la spécifié. Essaie avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objdump -s libtest.so | grep -i gcc
    Citation Envoyé par Neckara Voir le message
    strings quant à lui permet d'avoir une réponse de grep beaucoup plus lisible qu'en utilisant cat.
    C'est le but, strings est spécialisés dans les fichiers non-textuels. Mais du coup tu as pu avoir la version de GCC ?

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Avec objdump -s libtest.so | grep -i gcc ou objdump -s libtest.so | grep -i g++, je peux en effet trouver des numéro de version de gcc/g++ par contre, je ne sais pas si cela correspond à la version sj de mingw ou à l'autre version.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel version d'allegro utiliser avec Mingw 4.7.1?
    Par ShinobiX1 dans le forum Allegro
    Réponses: 1
    Dernier message: 07/10/2013, 14h11
  2. Réponses: 4
    Dernier message: 05/01/2012, 17h26
  3. Réponses: 5
    Dernier message: 10/03/2009, 11h54
  4. [VC++] Utilisation d'une DLL écrite en C++ avec mingw.
    Par swirtel dans le forum Visual C++
    Réponses: 1
    Dernier message: 20/06/2007, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo