1
votes

Exe de version d'application Qt ne fonctionne pas

J'ai construit une calculatrice très simple dans Qt. Lorsque je l'exécute en mode version à partir de qt creator, tout fonctionne bien. Cependant, lorsque je vais dans le dossier de publication et que je l'exécute, cela donne QT5Core.dll, QT5Widgets.dll et QT5Gui.dll introuvables. Après y avoir exécuté windeployqt par:

windeployqt Calculator.exe 

Toutes les dll sont ajoutées. Cependant, il donne ensuite l'erreur VCRUNTIME140_APP.dll et MSVCP140_APP.dll introuvable. Après les avoir copiés dans le dossier. L'exe ne donne aucune erreur en double-cliquant mais ne démarre tout simplement pas. Que devrais-je faire? J'ai trouvé cette solution ici , cependant je ne trouve aucun fichier qml dans le répertoire de l'application.

Je l'ai créé en tant qu'application de widget QT. J'utilise Windows 10 avec Visual Studio 2017 et le kit de bureau MSVC2017 64 bits. L'application est en C ++.

Mise à jour: Lancer la commande

windeployqt .

après avoir ajouté qt au chemin semble faire l'affaire. L'application fonctionne même après avoir supprimé qt du chemin. Je vais essayer d'exécuter l'application dans vm pour être plus sûr.


4 commentaires

Vous dites: cependant je ne trouve aucun fichier qml dans le répertoire de l'application , si vous utilisez un .qrc il n'est plus nécessaire d'utiliser le .qml car ceux-ci sont incorporés dans l'exécutable


Exécutez votre application à partir de l'invite de commande et vérifiez si elle affiche un message d'erreur.


Peut-être que vous pouvez simplement créer l'exe avec les dépendances?


Notez que Windows, dans sa sagesse, n'affichera pas la sortie stdout d'une application GUI dans l'invite de commande. Si vous voulez voir stdout, vous devez par exemple appeler AllocConsole () et freopen () pour faire apparaître une fenêtre avec la sortie stdout.


4 Réponses :


1
votes

Lors de l'exécution à partir de la ligne de commande, ajoutez votre répertoire Qt Bin au PATH. Par exemple:

C: \> PATH = C: \ Qt \ Qt5.11.0 \ 5.11.0 \ msvc2017_64 \ bin;% PATH%


0 commentaires

1
votes

Vous pouvez résoudre le problème tel que décrit par Selbie. Une autre méthode consiste à copier les fichiers .dll manquants dans le dossier où le.exe est placé.

Voir ici https: // doc .qt.io / Qt-5 / windows-deployment.html # creation-the-application-package :

Pour déployer l'application, nous devons nous assurer que nous copions les DLL Qt pertinentes (correspondant aux modules Qt utilisés dans l'application) et le plugin de plate-forme Windows, qwindows.dll, ainsi que l'exécutable dans la même arborescence de répertoires dans le sous-répertoire release.


0 commentaires

1
votes

définir la variable VCINSTALLDIR, exemple:

windeployqt.exe app.exe

et exécution suivante

set VCINSTALLDIR=p:\Programs\Microsoft Visual Studio\2017\Community\VC\

Ou copier vc_redist.x64.exe code> du sous-dossier Redist dans le dossier avec votre application.


0 commentaires

1
votes

Comme @mosa l'a mentionné, pour déployer l'application, nous devons nous assurer que nous copions les DLL Qt pertinentes (correspondant aux modules Qt utilisés dans l'application) et le plugin de la plateforme Windows, qwindows.dll, ainsi que l'exécutable dans la même arborescence de répertoires dans le sous-répertoire release.

Pour ajouter des fichiers .dll manquants, ouvrez d'abord QT MSVC Console et tapez la commande windeployqt.exe ,

 entrez la description de l'image ici

Ensuite, vous devez aller dans le répertoire que contient le fichier .exe . Supposons que mon .exe se trouve sur le bureau,

 windeployqt.exe --quick.

Ensuite, vous pouvez ajouter les fichiers .dll manquants en utilisant la commande suivante,

C:/
cd user/indrajith/desktop

0 commentaires