2013-04-24 6 views
11

Ich habe eine einfache Anwendung mit Qt 5.0.2 unter Windows 7 Ultimate entwickelt. Als Compiler verwendete der QtCreator MSVC2012_64bit. Und ich kann meine Anwendung nicht auf einen anderen Computer verschieben. Es funktioniert nicht. Qt-Anwendung erfordert DLLs, die ich nicht finden kann. Der Abhängigkeits-Explorer denkt, dass die unten angegebenen .dll nicht gefunden werden. Wo kann ich sie finden? Warum ist dieses Problem so weit verbreitet? Alle Leute beschweren sich, dass sie ihre .exe, die mit Qt entwickelt wurde, nicht auf anderen Computern bearbeiten können. enter image description hereSo führen Sie Qt 5-Anwendungen auf anderen Computern aus (Windows 7)

EDIT1: BTW wenn ich DCOMP.dll aus dem Internet heruntergeladen hinzugefügt, die nicht gefunden dlls werden 2-3 mal mehr als es jetzt ist :)

EDIT2: auch, dass auf anderen beachten Computer (Windows 7 Home Premium), wenn ich auf die exe-Datei doppelklicke, zeigt es, dass es loades und keine Wirkung hat, kein Fehler überhaupt nichts.

+0

So funktioniert es auf Ihrem Computer? Warum verwenden Sie Process Explorer nicht, um eine Liste aller DLLs zu erhalten, die zur Laufzeit geladen werden? – sashoalm

+0

Ja sicher! Aber ich kann die exe nicht auf anderen Computern starten. Und ich kann diese DLL nirgends in meinem Computer finden. So seltsam. – Narek

+0

Warum verwenden Sie Process Explorer nicht, um eine Liste aller DLLs zu erhalten, die zur Laufzeit geladen werden? Zum Beispiel, wenn du dein Programm ** auf deinem Computer startest **, wo es vermutlich funktioniert. Ich meine, installieren Sie Process Explorer auf Ihrem Computer, und tun Sie das. Außerdem hat MSVC nicht alle geladenen Bibliotheken ausgedruckt, wie diese Meldungen ''rundll32.exe': Geladen 'C: \ Windows \ System32 \ dwmapi.dll', kann die PDB-Datei nicht gefunden oder geöffnet werden ' – sashoalm

Antwort

10

dlls Dies ist die Liste der ich brauchte, und habe ich den C:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\platforms Ordner auch kopiert:

enter image description here

Genau dies und es funktionierte für mich. Übrigens verwende ich Windows 7 Ultimate 64x und Qt 5.0.2 für Windows 32-Bit (MinGW 4.7, 650 MB) Paket für Qt.

EDIT: Sie müssen möglicherweise auch QtCreator die DLL kopiert werden und auch müssen Sie möglicherweise eine Datei qt.conf mit dem folgenden Inhalt haben (von @Renato Antwort kopiert):

[Paths] 

Libraries=./platforms 
7

fügen Sie einfach die Datei qt.conf Ihre App dir mit folgendem Inhalt

[Paths] 

Libraries=./platforms 

dann auf gleiche App dir zu kopieren, die subdir "Plattformen", die Sie in dir C finden: \ Qt \ Qt5.1.1 \ tools \ QtCreator \ ist

Das ist alles.

Dies löst, weil qtcore.dll mit internen Pfaden Ihrer Qt-Installation kompiliert wird. (Ich weiß nicht wy!). Da qt.conf beim Start der App immer von qtcore gelesen wird, sind die Librarys in "platforms" enthalten und die App funktioniert überhaupt auf jedem Host.

Warnung: die qtcore und plates sub dir müssen von der gleichen qt-installation werden.

Sorry von der englischen aber die Lösung funktioniert gut.

+0

Sie haben meine Nacht gerettet, danke. Bitte akzeptieren Sie einen Bären eines Tages. – Erowlin

0

Danke für Ihre Hilfe Leute!

Für mich, nur qwindows.dll in die /platforms Verzeichnis hinzufügen irgendwie hat es nicht geschnitten.
Ich habe endlich alles durch unverblümt Kopieren der gesamten Plugins Verzeichnis meiner Anwendung Binärverzeichnis und die Schaffung einer qt.conf Datei mit folgendem Inhalt zu arbeiten:

in diesen Tagen
[Paths] 
Plugins=./plugins 
2

Qt (ab mindestens Qt 5.2, wenn nicht früher) mit "windeployqt.exe ", die auf Ihr kompiliertes Programm zeigt (und, wenn Sie wie ich sie verwenden, als zusätzliches Argument von" --qmldir path/to/QML/files "für ein Qt Quick - Programm) sollten alle ausspucken erforderlichen DLLs in das gleiche Verzeichnis wie die kompilierte Programm befindet sich zur Zeit für mich also auf einer lokalen Maschine zu bauen zum Beispiel, lief ich etwas entlang der Linien von:.

windeployqt --qmldir C:\Code\AppSource C:\Code\build-msvc2010\release 

Dies mit dem Qt \ bin in meinem $ PATH (oder, ich denke im Windows-Sprachgebrauch,% PATH%;)) mit Qt 5.5, obwohl ich dasselbe auch mit 5.2 und 5.3 gemacht habe.

IIRC wenn ich MSVC als Compiler verwende, den ich noch brauche Kopieren Sie diese DLLs (in meinem Fall msvc2010, also msvcp100.dll und msvcr100.dll) manuell, bu t Ich könnte mich an falsch erinnern.

+0

windeployqt sollte eine vcredist_x86.exe in Ihrem Ausgabeordner erstellen, die auf dem Zielsystem ausgeführt werden kann Der bevorzugte Weg, um fehlende msvc100.dll-Dateien und solche zu behandeln (wie es verpönt ist, diese manuell zu kopieren) .--- Auch wenn Sie einen saubereren Satz von Code zu th bewegen möchten Mit dem neuen System können Sie die Datei yourapp.exe in einen neuen Ordner verschieben und dort windeployqt ausführen, das nur die Dateien enthält, die Sie tatsächlich auf einem anderen Computer benötigen – jp36

+1

Mit MVC++ 2015 macht 'windeployqt' nicht vcredist_x86.exe oder vcredist_x64.exe Datei! – SuB

Verwandte Themen