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 :

[Qt][Import DLL] Problème Makefile / .pro


Sujet :

Qt

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut [Qt][Import DLL] Problème Makefile / .pro
    Bonjour à tous,

    Voici mon problème :
    Je dispose d'une DLL contenant des fonctions qui permettent de dialoguer avec un périphérique via une carte PCMCIA. Ce périphérique renvoit des données que j'aimerais afficher avec une interface graphique assez complexe. J'ai donc choisi d'utiliser Qt.

    -J'arrive à utiliser les fonctions de ma DLL dans un éxécutable simple, et je récupère les données dans la console.
    -J'arrive à réaliser une interface Qt, à la compiler
    (en réalisant un .pro -> makefile -> nmake).

    Quand j'essaie d'associer les deux, je n'arrive pas à utiliser les fonctions de ma dll en utilisant le format .pro->makefile.

    Je suppose que cela vient d'un problème de Libpath, ou ce genre de choses. Voici le genre d'erreur :

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     link /LIBPATH:"c:\qt4.3.3\lib" /NOLOGO /LTCG /DEBUG /MANIFESTFILE:"debug\CANTest2.intermediate.manifest" /SUBSYSTEM:WINDOWS /OUT:debug\CANTest2.exe @C:\DOCUME~1\EC678~1.DEC\LOCALS~1\Temp\nm13.tmp 
    TestDataRead.obj : error LNK2001: unresolved external symbol _CNMOuvrir
    TestDataRead.obj : error LNK2001: unresolved external symbol _CFCCharger
    TestDataRead.obj : error LNK2001: unresolved external symbol _ACCTerminer
    TestDataRead.obj : error LNK2001: unresolved external symbol _imp__DATStatus
    TestDataRead.obj : error LNK2001: unresolved external symbol _ACCDemanderStatus
    debug\CANTest2.exe : fatal error LNK1120: 5 unresolved externals
    NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\bin\link.EXE"' : return code '0x460'
    Stop.
    NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\bin\nmake.exe"' : return code '0x2'
    Pourtant j'ai essayé de mettre toutes les lib/dll/headers dans le dossier courant, ou même dans System32, etc...

    Donc si vous avez des infos, notamment sur comment spécifier des libpath, ou des librairies supplémentaires dans le .pro, ou toute autre aide pouvant servir, je vous serais vraiment reconnaissant de me les transmettre.

    Merci d'avance.

    G.

    Ma Config :
    Xp Pro
    Qt 4.3.3
    MS VS 2005 Pro
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    As-tu bien configuré ton .pro pour spécifier la variable LIBS comme il se doit? Peux-tu le poster stp?

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Oui c'est bon j'ai réussi à passer cet étape. Ca compile à présent, et ça s'éxécute.
    Par contre j'ai un autre problème :
    J'aimerais utiliser mon appli sur une autre machine, sans avoir à y installer Qt. J'ai lu quelques trucs, du genre "utiliser les librairies en static". J'ai essayé de modifier le .pro en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CONFIG += staticlib
    Et là, il commence la compilation, et à la fin il me sort un truc du genre
    C:\program n'est pas une commande
    Je me suis dit que c'était un problème de path, mais pourtant il n'y a pas d'erreurs, et ça fonctionne si j'enlève la ligne "CONFIG..." du .pro.

    Si vous avez des idées, je suis preneur.

    Merci encore

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Faire ça dans ton fichier pro indique que tu veux compiler *ton* projet en tant que bibliothèque statique, ce qui n'est pas vraiment le cas.
    Il faut que tu recompile Qt; en allant à la racine de ton rep Qt:

    nmake distclean
    configure -static [et toute les autres options que tu veux]

    Ensuite, tu recompiles totalement ton projet, et ça devrait être bon... je crois (je ne l'ai jamais fait moi même)

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Ah ok, j'avais donc mal compris.
    Je trouve ça bizzarre qu'il faille recompiler tout Qt, pour simplement l'inclure dans des éxécutables. Enfin, je dois avouer que je connais pas grand chose en gestion de bibliotheques.

    La compilation de Qt est en cours, je te dirai ce que ça donne demain.

    Merci beaucoup en tout cas.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut Echec
    Bon, j'ai terminé la compilation de Qt, mais là j'ai d'importants problèmes.
    Tout d'abord, mon nmake marche plus que sur une patte, il veut se faire débuguer dès que je lance un distclean ... je comprends rien...

    Ensuite, la compilation de Qt s'est quand même terminée correctement, je peux utiliser les différentes classes, designer, etc ...

    Lorsque j'essaie de compiler mon projet, c'est un festival d'erreurs !
    En gros, les erreurs sont du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error LNK2001 : unresolved external symbol ""__declspec(dllimport) Qxxx:xxx()
    Je me suis dit qu'il avait du mal à trouver les libs et les .h . J'ai donc spécifier dans le .pro et dans la config de Visual studio tous les noms et chemins des headers et des libs.

    Lors de la compilation, mêmes erreurs ...

    J'ai donc essayer autre chose :
    J'ai copier le qapplication.h dans mon répertoire courant, afin qu'il soit sûr de le trouver. Il me reconnaît donc le .h, et là il me dit qu'il y a une erreur dans qapplication.cpp à la ligne je sais pas combien ...
    Si ensuite j'enlève le qapplication.h su répertoire courant, et que je relance la compilation, il arrive à finir (alors que toutes les autres classes de Qt sont elles théoriquement non détectées) et me pond un exe de quelques mega (ce qui n'est pas mauvais signe vu mon objectif).

    Cette application marche sur l'ordi ou je développe, mais toujours pas sur un autre pc.

    Je ne sais plus quoi faire.

    Merci d'avoir lu jusqu'ici.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  7. #7
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Pour compiler ton projet t'as fait quoi?

    nmake distclean && qmake && nmake ?

    Quelle est la taille des exe du designer et de l'assistant?

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    oui j'ai fait nmake distclean & qmake & nmake

    Par contre, comme je l'ai dit, le distclean a l'air foireux. Ca marchait avant ... Alors je supprime les fichiers à la main (les makefiles, le contenu de Debug)

    L'assistant fait 5,42 Mo, le designer 8,252 Mo

    Merci de te pencher sur mon problème, je t'en susi vraiment reconnaissant .
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  9. #9
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Hmmm... Tu peux aller dans le répertoire examples\tutorial\t1 de Qt stp?

    A cet endroit, tu y fais la même chose : nmake distclean && qmake && nmake

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Borné comme je suis, j'ai réinstallé mon VS, et je recompile Qt avec juste configure -static (je sais c'était inutile mais ça aura le mérite d'être propre).
    Je te redis demain matin où cela en est.

    Pour l'instant, mon nmake ne m'a fait aucune erreur, c'est déjà une petite victoire. J'ai tout installé dans des dossiers sans espaces dans le nom (du genre program files) afin d'éviter tous les problèmes de path mal interprétés (les " " ne fonctionnent pas toujours bien).

    C'est super de m'aider .

    Tcho

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Bonjour,

    J'ai donc tout réinstallé, recompilé Qt, et tout à l'air de s'être fait proprement.

    -Mon designer et mon assistant font toujours la même taille.
    -Mon projet, une fois compilé, fait toujours la même taille, et ne fonctionne toujours pas. Le nmake ne trouves toujours pas les headers de Qt.
    -Pour ce qui est de t1, le contenu à l'air correct. Les éxécutables font plusieurs Mo pour un simple hello world (genre 8 et 4).

    Le .pro a cependant l'air différent. Je vais essayer de refaire le mien en fonction de celui ci.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut Ca y est !
    Ca y est !

    Bon j'ai pas l'impression que changer le .pro ait eu beaucoup de succès, l'éxecution de qmake me mettant toujours que les headers qxxx.h sont introuvables.
    En même temps, dans les tutos, ils n'incluent pas les headers des classes de qt, c'est moi qui suit sans doute à coté de la plaque.

    Par contre, maintenant, j'arrive à compiler en mode release (il me mettait une erreur avant). Contrairement a l'exe crée en mode Debug, le mode release du projet fonctionne sur l'autre pc !!!!

    C'est la fête !!! Merci beaucoup à toi IrmatDen pour ta patience et tes conseils. Sans toi je serais encore à essayer de faire de mon projet une lib statique ...

    Quel bon début de journée !

    Bye et encore merci

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

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

Discussions similaires

  1. [QT][Import DLL] Problème Makefile / .pro
    Par Gulish dans le forum Windows
    Réponses: 1
    Dernier message: 19/02/2008, 09h56
  2. [cygwin1.dll] Probléme avec cygwin1.dll
    Par Furius dans le forum Windows
    Réponses: 7
    Dernier message: 29/11/2005, 21h18
  3. [DLL] Problèmes d'accès et de mise a jour du fichier
    Par Clorish dans le forum Langage
    Réponses: 14
    Dernier message: 27/06/2005, 14h28
  4. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  5. Réponses: 4
    Dernier message: 01/07/2004, 11h53

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