Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Qt
Qt Forum d'entraide technique sur la bibliothèque Qt. Avant de poster -> F.A.Q Qt
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/12/2012, 10h07   #1
cho7
Nouveau Membre du Club
 
Inscription : janvier 2005
Messages : 60
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 60
Points : 33
Points : 33
Par défaut Déployer un programme simplement

Hello,

je tente deséspérement de faire tourner un programme Qt5 sur une autre machine que la mienne, et pour l'instant je n'ai toujours pas réussi.

Démarche : quand je lance mon programme depuis le folder release du projet, bien évidemment il plante (car je n'ai pas le <qt_dir>/bin dans le PATH)

Du coup je lui donne progressivement les DLL qu'il me demande pour pouvoir tourner, et au bout d'un moment il démarre enfin. OK

Sauf que, ya deux choses que je ne pige pas :

1/ Pourquoi je dois lui donner 19 DLL à manger alors que partout je peux lire que généralement QTGui, QTWidget, et QTCore suffisent ? Actuellement, j'utilise toutes ces DLL (edit: après inspection a priori c'est mon utilisation de WebKit qui ajoute toutes des dll) :

D3DCOMPILER_43.DLL
ICUDT49.DLL
ICUIN49.DLL
ICUUC49.DLL
LIBEGL.DLL
LIBGLESV2.DLL
QTCORE5.DLL
QTGUI5.DLL
QTMULTIMEDIA5.DLL
QTMULTIMEDIAWIDGETS5.DLL
QTNETWORK5.DLL
QTOPENGL5.DLL
QTPRINTSUPPORT5.DLL
QTQML5.DLL
QTQUICK5.DLL
QTSQL5.DLL
QTV85.DLL
QTWEBKITWIDGETS5.DLL
QTWIDGETS5.DLL




2/ Mais surtout, POURQUOI quand je deploie ce programme sur une autre machine avec les mêmes DLL, il ne se lance pas (pas d'erreur, ni rien). Pourtant dependence walker m'indique que tout est bien chargé

Bref, je desespère, je présume qu'installer Qt sur chaque machine résoudrait le problème, mais je ne peux pas faire downloader le SDK à chaque user, c'est juste pas possible.....

Et j'ai aussi tenté la compilation statique, mais je n'ai jamais réussi à compiler Qt5 (l'opengl plante sans arret, que ce soit en mode desktop ou avec ANGLE et le directX sdk) ni QT4 (si, techniquement j'ai réussi à le compiler, mais c'est le nmake install qui plante...)


Bref, à l'aiiiiide



PS : je suis sur windows 7 64bits, je compile en 32bits via le compilo MSVC2010
cho7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 13h07   #2
ness522
Membre éclairé
 
Homme
Inscription : février 2010
Messages : 242
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : février 2010
Messages : 242
Points : 368
Points : 368
As-tu installé les redist MSCV correspondant sur la machine cible ?
Ils se trouvent peut-être même dans le dossier Qt5 précompilé
__________________
http://sfabry.developpez.com/
ness522 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 14h16   #3
cho7
Nouveau Membre du Club
 
Inscription : janvier 2005
Messages : 60
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 60
Points : 33
Points : 33
Citation:
Envoyé par ness522 Voir le message
As-tu installé les redist MSCV correspondant sur la machine cible ?
Ils se trouvent peut-être même dans le dossier Qt5 précompilé
Hello,

oui, j'inclu systématiquement l'installateur vcredist_x86.exe au cas où, mais je viens de le tester à l'instant sur une VM sans les redist msvc, et normalement l'erreur est explicite quand ils ne sont pas installé. Dans mon cas je n'ai pas d'erreur (et je les vois bien chargés quand je scrute avec dependance walker)


cho7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 15h08   #4
Troudhyl
Modérateur
 
Homme
Ingénieur développement logiciels
Inscription : mai 2009
Messages : 964
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

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

Informations forums :
Inscription : mai 2009
Messages : 964
Points : 1 689
Points : 1 689
Tu as essayé de lancer l'appli avec le profiling de Dependency Walker pour voir s'il y a un problème ?
Troudhyl est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2012, 15h21   #5
cho7
Nouveau Membre du Club
 
Inscription : janvier 2005
Messages : 60
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 60
Points : 33
Points : 33
Citation:
Envoyé par Troudhyl Voir le message
Tu as essayé de lancer l'appli avec le profiling de Dependency Walker pour voir s'il y a un problème ?
ah, je ne connaisais même pas cette fonction !!

bon, en tout cas j'ai désormais une erreur un peu plus explicite :

Citation:
GetProcAddress(0x765E0000 [ADVAPI32.DLL], "SystemFunction036") called from "MSVCR100.DLL" at address 0x6F0BB4D6 and returned 0x765E1919.
Failed to load platform plugin "windows". Available platforms are:

DllMain(0x752D0000, DLL_PROCESS_DETACH, 0x00000001) in "IMM32.DLL" called.
DllMain(0x752D0000, DLL_PROCESS_DETACH, 0x00000001) in "IMM32.DLL" returned 1 (0x1).
DllMain(0x762D0000, DLL_PROCESS_DETACH, 0x00000001) in "MSCTF.DLL" called.
DllMain(0x762D0000, DLL_PROCESS_DETACH, 0x00000001) in "MSCTF.DLL" returned 1 (0x1).
DllMain(0x6D530000, DLL_PROCESS_DETACH, 0x00000001) in "QTWEBKITWIDGETS5.DLL" called.
DllMain(0x6D530000, DLL_PROCESS_DETACH, 0x00000001) in "QTWEBKITWIDGETS5.DLL" returned 1 (0x1).
DllMain(0x73920000, DLL_PROCESS_DETACH, 0x00000001) in "LIBEGL.DLL" called.
DllMain(0x73920000, DLL_PROCESS_DETACH, 0x00000001) in "LIBEGL.DLL" returned 1 (0x1).
DllMain(0x6BAA0000, DLL_PROCESS_DETACH, 0x00000001) in "D3D9.DLL" called.
DllMain(0x6BAA0000, DLL_PROCESS_DETACH, 0x00000001) in "D3D9.DLL" returned 1 (0x1).
DllMain(0x72B00000, DLL_PROCESS_DETACH, 0x00000001) in "DWMAPI.DLL" called.
DllMain(0x72B00000, DLL_PROCESS_DETACH, 0x00000001) in "DWMAPI.DLL" returned 1 (0x1).
DllMain(0x73B80000, DLL_PROCESS_DETACH, 0x00000001) in "D3D8THK.DLL" called.
DllMain(0x73B80000, DLL_PROCESS_DETACH, 0x00000001) in "D3D8THK.DLL" returned 1 (0x1).
DllMain(0x707E0000, DLL_PROCESS_DETACH, 0x00000001) in "QTSQL5.DLL" called.
DllMain(0x707E0000, DLL_PROCESS_DETACH, 0x00000001) in "QTSQL5.DLL" returned 1 (0x1).
[...]
J'ai désormais un peu plus de ressource pour googler mon problème, mais si ca évoque déjà quelque chose pour vous je suis preneur...


merci
cho7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2012, 21h54   #6
cho7
Nouveau Membre du Club
 
Inscription : janvier 2005
Messages : 60
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 60
Points : 33
Points : 33
Par défaut trouvé

bien, j'ai résolu mon problème !

alors, tout d'abord j'ai appris qu'il fallait, en plus des DLL sus-mentionnées, ajouter les plugins Qt utilisés par l'application dans un sous-dossier plugins/. Certains d'entres eux semblent obligatoires (plugins/platform/windows.dll par exemple) d'autres dépendent de ce qu'on utilise dans l'application. J'ai par exemple dû ajouter ceux qui gèrent les images car sinon mes icônes n'apparaissaient pas dans ma toolbar.... Si quelqu'un a une idée sur "comment avoir la liste exhaustive des plugins utilisés par l'application ?"

Je suis arrivé ensuite au moment bizarre où le programme ne fonctionnait QUE quand je le lancais via le module de profiling de Dependency Walker (mais pas quand je double cliquais dessus...)

J'ai résolu le problème en ajoutant un fichier qt.conf avec dedans :

Citation:
[Paths]
Plugins = plugins
Bref, le mystère demeure sur certains points, mais au final tout fonctionne désormais comme un charme !

En espérant que ce post en aide certains, car j'ai bien galéré sur ce coup...

Merci pour la piste du module de profiling
cho7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h47.


 
 
 
 
Partenaires

Hébergement Web