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

Discussion :

_Z21qRegisterResourceDataiPKhS0_S0_ introuvable dans QtCore4.dll

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 39
    Par défaut _Z21qRegisterResourceDataiPKhS0_S0_ introuvable dans QtCore4.dll
    Bonjour

    J'ai installé QT 4.7 il y a 2 mois pour explorer cette alternative à mon VS 2008 pro que j'utilise sans problème.

    J'ai d'abord été surpris car je pensais que QT Creator ne servait qu'à faire des UI avec des descripteur XML et les .h et .cpp qui vont bien pour les intégrer dans des projets VS ou autres. Et j'ai découvert un IDE complet qui compile.

    Bon je compile et j'exécute sans problème les exemples et j'ai voulu m'attaquer à plus gros : http://www.xm1math.net/algobox/download.html#SECTION3

    Et là compilation sans problème mais impossible de lancer l'exécutable : en lancement direct il m'affichait QtCore4.dll introuvable.

    Bon probléme de dépendance et de path je pense: je mets dans mon path windows C:\Qt\2010.05\bin et là j'ai le message :
    Le point d'entrée de procèdure _Z21qRegisterResourceDataiPKhS0_S0_ est introuvable dans la bibliothèque de liaison dynamique QtCore4.dll
    J'ai nettoyé le projet et recompilé; rien n'y fait.

  2. #2
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 39
    Par défaut
    J'ai trouvé des réponses en anglais sur ce problème que je n'avais pas trouvées lors de ma première recherche et qui l'ont solutionné.

    Il faut utiliser les dll qui se trouvent en c:\Qt\2010.05\qt\bin, et pas celles qui sont dans c:\Qt\2010.05\bin.

    Alors si j'ai bien compris les versions des dll c:\Qt\2010.05\bin sont pour compiler (pardon linker) avec Visual Studio et les versions c:\Qt\2010.05\qt\bin avec QT Creator et le g++ de mingw.

    Si quelqu'un peut me confirmer ça car j'ai un doute. Merci.

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par Jeannot40 Voir le message
    Alors si j'ai bien compris les versions des dll c:\Qt\2010.05\bin sont pour compiler (pardon linker) avec Visual Studio et les versions c:\Qt\2010.05\qt\bin avec QT Creator et le g++ de mingw.
    Dans le dossier /bin, il n'y a que des DLL, soit des fichiers très peu intéressants pour la compilation, n'étant utilisées que pour l'exécution. Pour compiler et linker, tu dois prendre les DLL de /qt/bin, uniquement celles qui t'intéressent (généralement, qtcore4.dll et qtgui4.dll). Tu trouveras les fichiers d'import (.a pour GCC/MinGW, utilisés pendant la compilation, phase d'éditions des liens) dans /qt/lib.

    Le problème venait probablement du fait que Qt Creator (dans /bin) est compilé avec VC alors que le SDK ne fournit que MinGW, avec lequel tu compiles le tout. Et ces deux-là ne s'aiment pas trop, généralement (VC versus GCC).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 39
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    ...
    Le problème venait probablement du fait que Qt Creator (dans /bin) est compilé avec VC alors que le SDK ne fournit que MinGW, avec lequel tu compiles le tout. Et ces deux-là ne s'aiment pas trop, généralement (VC versus GCC).
    Exact: j'ai vérifié les entêtes des dll et celles dans /bin sont signalés compilées par VC90, c'est à dire Visual Studio 2010. Et bizarrement les noms des fonctions exportables ne sont aussi pas du tout les mêmes. Pour autant que l'utilitaire que j'ai utilisé décode bien (DLL Export Viewer).

    Je me demande s'il n'y a pas une sombre histoire de format de DLL différents (PE vs ELF) ?

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par Jeannot40 Voir le message
    Exact: j'ai vérifié les entêtes des dll et celles dans /bin sont signalés compilées par VC90, c'est à dire Visual Studio 2010. Et bizarrement les noms des fonctions exportables ne sont aussi pas du tout les mêmes. Pour autant que l'utilitaire que j'ai utilisé décode bien (DLL Export Viewer).

    Je me demande s'il n'y a pas une sombre histoire de format de DLL différents (PE vs ELF) ?
    Petite erreur : VC9, c'est la version 2008 ; VC10, c'est la version 2010.

    PE : Portable Executable, des exécutables qui fonctionnent sous DOS et Windows (enfin, il me semble). C'est donc du réservé à Windows.
    ELF : un des nombreux formats de fichiers exécutables que reconnaît le kernel Linux, généralement le plus utilisé.
    Et si le format changeait en fonction du compilateur, c'ets Windows qui ne s'y retrouveraiut plus .

    En fait, la vraie différence réside dans le nommage des symboles (name mangling), rien n'ets standardisé en C++, c'ets-à-dire que chaque compilateur appelle les fonctions des DLL comme il le souhaite et ne comprend que son dialecte, d'où petits problèmes (pour plus de détails : http://qt-labs.developpez.com/cpp/ab...ilite-binaire/ et http://qt-labs.developpez.com/cpp/ab...vention-appel/).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

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

Discussions similaires

  1. Fonction introuvable dans la dll
    Par modgeek dans le forum C#
    Réponses: 4
    Dernier message: 14/06/2013, 10h58
  2. [EasyPHP] ordinal 157 est introuvable dans ssleay32.dll
    Par jpclutier dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 02/07/2008, 14h35
  3. Réponses: 1
    Dernier message: 27/02/2008, 23h26
  4. Réponses: 10
    Dernier message: 04/04/2007, 16h02
  5. fonction introuvable dans la dll ?
    Par FamiDoo dans le forum C++
    Réponses: 5
    Dernier message: 22/06/2006, 16h33

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