Qt 5.0 programme s'exécute dans QtCreator mais pas à l'extérieur
Voici le contexte:
- J'ai développé un programme avec Qt sous Windows 7 x64.
- J'ai mis à jour de Qt 5.0.1, QtCreator 2.6.1, Compilateur VS2010.
Maintenant le statut:
- Mon programme s'exécute correctement dans QtCreator mais, quand je l'ai essayé à l'extérieur, j'ai reçu plusieurs erreurs.
- J'ai vérifié sur ce sujet qui m'a donné quelques réponses:
qtcreator - exe ne fonctionne bien à l'intérieur de qtcreator mais n'est pas à l'extérieur - J'ai donc ajouté les dll de Qt, et il a permis, pas plus Bibliothèques Manquantes messages.
- Encore, il n'aurait pas exécuté à l'extérieur de QtCreator (pas plus de message d'erreur, j'ai juste ne fonctionne pas) j'ai donc ajouté le plates-formes répertoire avec les deux qminimal et qwindows dll, il n'a pas aidé.
- J'ai aussi téléchargé et ajouté libEGL.dll que suggérée, sans résultat.
Je suis coincé et pourrait vraiment l'aider un peu.
Quelles erreurs avez-vous l'obtenir? Qu'est-dependency walker dire à propos de votre fichier exe "à l'extérieur" QtCreator?
Au début, j'ai eu "dll manquante" erreurs mais, comme je l'ai ajouté, je n'ai plus de message d'erreur, j'ai juste ne fait rien 🙁
ça plante au démarrage?
Je ne semble pas de plantage au démarrage, je n'ai même pas voir le processus apparaissent dans l'Explorateur de Processus.
J'ai mis à jour mon depwalker. 32b dit "attention: Au moins un retard-charge de la dépendance du module n'a pas été trouvé. Attention: Au moins un module a un suspens à l'importation en raison d'un manque de fonction d'exportation dans un délai-dépendante de la charge, module". 64b dit "Erreur: Au moins un module a un suspens à l'importation dus à une exportation manquante de la fonction implicitement module dépendant. Erreur: les Modules avec différents types de processeurs ont été trouvés. Attention: Au moins un retard-charge de la dépendance du module n'a pas été trouvé. Attention: Au moins un module a un suspens à l'importation en raison d'un manque de fonction d'exportation dans un délai-dépendante de la charge, module".
Au début, j'ai eu "dll manquante" erreurs mais, comme je l'ai ajouté, je n'ai plus de message d'erreur, j'ai juste ne fait rien 🙁
ça plante au démarrage?
Je ne semble pas de plantage au démarrage, je n'ai même pas voir le processus apparaissent dans l'Explorateur de Processus.
J'ai mis à jour mon depwalker. 32b dit "attention: Au moins un retard-charge de la dépendance du module n'a pas été trouvé. Attention: Au moins un module a un suspens à l'importation en raison d'un manque de fonction d'exportation dans un délai-dépendante de la charge, module". 64b dit "Erreur: Au moins un module a un suspens à l'importation dus à une exportation manquante de la fonction implicitement module dépendant. Erreur: les Modules avec différents types de processeurs ont été trouvés. Attention: Au moins un retard-charge de la dépendance du module n'a pas été trouvé. Attention: Au moins un module a un suspens à l'importation en raison d'un manque de fonction d'exportation dans un délai-dépendante de la charge, module".
OriginalL'auteur Darkiwi | 2013-03-22
Vous devez vous connecter pour publier un commentaire.
C'est un problème de dépendance que votre programme ne peut pas charger ses dépendances, copiez les fichiers de dépendance (fichiers DLL) pour l'application répertoire est temporaire, c'est très risqué de manière à ce que votre application peut confrontés à des problèmes dans la machine cible, si la machine cible ne dispose pas de la version de Microsoft Runtime Library installé sur eux, votre application ne peut pas fonctionner correctement, vous pouvez trouver qui dependenices (fichiers DLL) les besoins de votre application avec Dependency Walker.
Il y a deux façons de résoudre ce problème:
Première est d'utiliser Microsoft Visual C++ Runtime 2010 composants de votre installshield (ou un autre versions dépend de la version de bibliothèque d'Exécution que vous avez compilé avec elle), que l'utilisateur pouvait l'installer en mode silencieux, ou de l'installer avec sa binaire exécutable, sans l'utilisation installshield, et, plus tard, de copier DLL fichiers de répertoire de l'application et de le distribuer.
Deuxième est l'utilisation de la compilation statique méthode pour éviter de tels problèmes comme ça, mais pour le statique de la compilation de votre application, vous avez besoin d'une Licence Commerciale si vous souhaitez le distribuer sur les ordinateurs cible.
Pour Déployer Votre Application sur les ordinateurs cible:
1) Mettre Microsoft Visual C++ Runtime 2010 de la Bibliothèque dans le dossier de votre application, de sorte que l'utilisateur peut l'installer sur leur machine.
2) Copie de l'application dépendances nécessaires (
DLL files
) à partir deQt's bin
dossier dans votre dossier d'application (bin
chemin d'accès au dossier:C:\Qt\Qt5.0.2\5.0.2\msvc2010\bin
).3) Copie
imageformats
dossier à partir de votreQt's plugins
dossier dans le dossier de votre application (si vous utilisez une ressource d'image de fichier dans votre application).4) Copie
platforms
dossier à partir de votreQt's plugins
dossier dans votre dossier d'application.Qt plugins chemin d'accès au dossier:
C:\Qt\Qt5.0.2\5.0.2\msvc2010\plugins\
OriginalL'auteur Reza Ebrahimi
Le Qt site du projet est pleine de ces sujets. Le suivi des dépendances seulement informer de la compilation des dépendances. Il y a aussi des Dll sont chargées dynamiquement, vous ne' obtenir toute erreur, avertissement ou que ce soit. Si vous utilisez un stock de construire la Dll (à l'exclusion de Qt5*.dll) dont vous auriez besoin sont:
Plus compilateur dll runtime en fonction de quelle génération vous êtes en utilisant.
Vous pouvez couper sur les dépendances de manière significative, si vous construisez avec les ordinateurs de bureau support d'OpenGL au lieu de l'ANGLE et sans le webkit. Ensuite, vous avez seulement besoin de la plate-forme de plugin et de l'intervalle Qt modules que vous utilisez.
OriginalL'auteur dtech
il suffit d'ajouter le fichier qt.conf de votre répertoire app avec le contenu suivant
[Chemins]
Bibliothèques=./les plates-formes
puis les copier, de même répertoire app, le sous-répertoire "plates-formes" que vous pouvez trouver dans:
C:\Qt\Qt5.1.1\Tools\QtCreator\bin
C'est tout.
Cela fonctionne parce que qtcore.dll est compilé avec l'intérieur de chemins de votre qt de l'installation.
(Je ne sais pas pourquoi!). Depuis t.conf est toujours lu par qtcore au démarrage de l'application,
la bibliothèque de "plates-formes" et l'application va travailler pour n'importe quel hôte.
Avertissement: le qtcore et des plates-formes sous-répertoire doivent provenir de la même qt installation.
OriginalL'auteur Renato