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

Qt Discussion :

Édition de liens avec le binaire Qt 4.6.0


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut Édition de liens avec le binaire Qt 4.6.0
    Bonjour à tous,

    Actuellement stagiaire, je cherche un moyen d'utiliser Qt 4.6 avec visual studio. Pour cela j'ai déja essayé plusieurs tutoriels mais sans succès.
    J'ai téléchargé hier les binaires de Qt 4.6.0 statique dans la rubrique binaire qt et visual C++ 2008, j'ai paramétrer les propriétés du projet (chemin vers include, chemin vers lib, ...).

    La compilation se passe bien, mais j'ai une erreur à l'édition de liens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    --- Début de la génération*: Projet*: tt, Configuration*: Debug Win32 ------
    1>Édition des liens en cours...
    1>LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRT' et les autres bibliothèques*; utilisez /NODEFAULTLIB:library
    1>QtGui4-DVP.lib(qaccessible_win.obj) : error LNK2019: symbole externe non résolu __imp__PlaySoundW@12 référencé dans la fonction "public: static void __cdecl QAccessible::updateAccessibility(class QObject *,int,enum QAccessible::Event)" (?updateAccessibility@QAccessible@@SAXPAVQObject@@HW4Event@1@@Z)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmGetDefaultIMEWnd@4 référencé dans la fonction "struct HWND__ * __cdecl getDefaultIMEWnd(struct HWND__ *)" (?getDefaultIMEWnd@@YAPAUHWND__@@PAU1@@Z)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmGetContext@4 référencé dans la fonction "struct HIMC__ * __cdecl getContext(struct HWND__ *)" (?getContext@@YAPAUHIMC__@@PAUHWND__@@@Z)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmReleaseContext@8 référencé dans la fonction "void __cdecl releaseContext(struct HWND__ *,struct HIMC__ *)" (?releaseContext@@YAXPAUHWND__@@PAUHIMC__@@@Z)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmNotifyIME@16 référencé dans la fonction "void __cdecl notifyIME(struct HIMC__ *,unsigned long,unsigned long,unsigned long)" (?notifyIME@@YAXPAUHIMC__@@KKK@Z)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmGetCompositionStringW@16 référencé dans la fonction "long __cdecl getCompositionString(struct HIMC__ *,unsigned long,void *,unsigned long)" (?getCompositionString@@YAJPAUHIMC__@@KPAXK@Z)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmAssociateContext@8 référencé dans la fonction "void __cdecl enableIme(class QWidget *,bool)" (?enableIme@@YAXPAVQWidget@@_N@Z)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmSetCandidateWindow@8 référencé dans la fonction "public: virtual void __thiscall QWinInputContext::update(void)" (?update@QWinInputContext@@UAEXXZ)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmSetCompositionWindow@8 référencé dans la fonction "public: virtual void __thiscall QWinInputContext::update(void)" (?update@QWinInputContext@@UAEXXZ)
    1>QtGui4-DVP.lib(qwininputcontext_win.obj) : error LNK2019: symbole externe non résolu _ImmSetCompositionFontW@8 référencé dans la fonction "public: virtual void __thiscall QWinInputContext::update(void)" (?update@QWinInputContext@@UAEXXZ)
    1>QtCore4-DVP.lib(qeventdispatcher_win.obj) : error LNK2019: symbole externe non résolu _WSAAsyncSelect@16 référencé dans la fonction "public: void __thiscall QEventDispatcherWin32Private::doWsaAsyncSelect(int)" (?doWsaAsyncSelect@QEventDispatcherWin32Private@@QAEXH@Z)
    1>C:\Documents and Settings\antoine daumas\Bureau\tt\Debug\tt.exe : fatal error LNK1120: 11 externes non résolus
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\antoine daumas\Bureau\tt\tt\Debug\BuildLog.htm"
    1>tt - 12 erreur(s), 1 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

    J'avoue ne pas du tout comprendre, je suis débutant dans l'utilisation de l'IDE visual studio.

    Je me suis inspiré d'une configuration de visual studio 2005 avec Qt4.1, mais il y a une chose qui diffère entre les deux. Dans ce dernier les fichiers .lib sont QtCored4.lib, QtGuid4.lib et qtmaind.lib or je possède seulement les fichiers QtGui4-DEVPd.lib,QtGui4-DEVPd.lib,QtCore4-DEVPd.lib,QtGui4-DEVP.lib, qtmain4-DEVPd.lib et qtmain4-DEVPd.lib.

    Pourriez-vous m'expliquer la démarche à suivre pour installer et configurer convenablement Qt avec visual C++ 2008.

    Je vous remercie d'avance.

  2. #2
    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




    As-tu une raison spécifique d'utiliser des binaires statiques ? Si non, évite-les, ça ne t'apportera rien si ce n'est des problèmes (par exemple, ici, les statiques ne sont pas directement liés aux autres bibliothèques requises, au contraire des dynamiques).*


    Pourquoi utiliser Qt 4.6.0 ? On a des binaires pour Qt 4.6.2, des binaires pour VS9 et Qt 4.6.3 sont disponibles sur le site de Nokia ! Ne reste pas en arrière, suis l'évolution et évite notamment les quelques bogues corrigées.*


    Aussi, pour pouvoir t'aider avec SVS9 : édition pro ou express ? Si ce n'est pas une express, utilise le plug-in pour VS disponible sur le site de Nokia, section téléchargements. Si tu utilises l'édition express, passe obligatoirement par qmake, n'essaye pas autre chose.*
    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 !

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut
    Merci de répondre aussi rapidement

    Je dispose de visual C++ 2008 express.
    Je viens d'enlever les binaires 4.6.0 et je les remplacer par les sources de Qt 4.6.2.
    A partir du terminal de visual studio, j'ai tapé les commandes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cd %QTDIR%\qt
    configure -static -fast
    nmake
    En ce moment, le nmake est en plein boulot, je n'ai vu ton message qu'après l'avoir lancé.

    Mon sujet de stage, c'est de développé un clavier virtuel sur tablet PC, l'application de base existe déja donc je veux créer une DLL qui permettra d'être insérer si le support de l'application est tactile. En plus ça me permet de me frotter au difficulté de la compilation.

    Cependant le pc qu'on m'a donné possède Qt 4.1 et j'ai besoin de Qt4.6 au minimum (t'en qu'a faire l'une des dernières). Je veux donc lier une librarie DLL compiler en Qt 4.6 avec une application en Qt4.1, mais est ce seulement possible? On m'a dit qu'il ne devrait normalement pas y avoir de problème.

    Pour éviter d'insérer les DLLs dans le dossier de l'application les développeur où je suis préfèrent n'avoir qu'un .exe d'où une liaison statique.

    Quelles sont les commandes que tu me recommandes pourle qmake?

  4. #4
    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 kuro00 Voir le message
    Cependant le pc qu'on m'a donné possède Qt 4.1 et j'ai besoin de Qt4.6 au minimum (t'en qu'a faire l'une des dernières). Je veux donc lier une librarie DLL compiler en Qt 4.6 avec une application en Qt4.1, mais est ce seulement possible? On m'a dit qu'il ne devrait normalement pas y avoir de problème.

    Très personnellement, la peste me paraît de meilleure augure : que va dire le compilo s'il trouve deux implémentations de la même fonction ? Il va te cracher des erreurs à n'en plus vouloir ! Pour éviter ça, il faut mettre une version de Qt dans un namespace supplémentaire (genre Qt46).*


    Aussi, tu n'es pas vraiment sûr de pouvoir passer un QString ou autre de l'une vers l'autre (problèmes de compatibilité binaire : tu donnes un QString de 32 bits là où on en attend une de 36... il faudrait caster, va savoir comment on fait ça).*


    Donc, une seule et unique version de Qt par projet, c'est parfait (surtout qu'il suffit de repartir des sources et du .pro pour avoir la toute dernière version après recompilation du projet).*


    Quand tu as un .pro, c'est très facile d'obtenir un fichier de projet VS :*
    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 !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 118
    Par défaut
    tu vas sur le site nokia tu charges le binaire 4.6.3, il y en a un pour vs2008 en 32bit, si tu veux 64b la il faut les sources et recompiler

    tu charges aussi le visual studio add-in....

    quand c'est fait.. dans vs2008, tu auras un menu qt, tu configure et fait pointer vers la version qt que tu as installe apres tu as juste a faire open qt project et ca marche comme sure des roulettes

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Par défaut
    Merci, je vais essayer ça.

    J'avais déjà fait une tentative d'installer visual C++ 2008 express avec Qt, seulement quand j'ai lancé l'add-in qt visual un message d'erreur est apparu pour me dire: aucune installation de visual 200x connu Note: Visual C++ n'est pas supporté ... (un truc dans le genre).

    Les librairies DLL contiennent quoi finalement et sous quelle forme, c'est du langage machine? ça me bloque j'arrive pas à comprendre comment ça marche en fait.

Discussions similaires

  1. BLAS: édition de liens avec libcblas.a
    Par micheldup dans le forum C++
    Réponses: 2
    Dernier message: 10/10/2007, 01h21
  2. Réponses: 5
    Dernier message: 17/04/2007, 11h10
  3. Ordre de l'édition des liens avec GCC
    Par Matthieu Brucher dans le forum Linux
    Réponses: 6
    Dernier message: 29/08/2006, 07h56
  4. Erreur d'édition de liens avec __imp__RegCloseKey
    Par gdpasmini dans le forum MFC
    Réponses: 2
    Dernier message: 23/03/2006, 14h18
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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