2013-05-07 17 views
6

Ich verwende Qt5 mit dem Qt Creator.Qt5Widgets.dll fehlt?

Mein Programm funktioniert gut, wenn ich es aus dem Qt Creator starte selbst, aber wenn ich versuche, die .exe Datei aus debug oder release Ordnern zu laufen, werde ich nur einen Fehler:

The program can't start because Qt5Widgets.dll is missing from your computer. 
Try reinstalling the program to fix this problem. 

I‘ M neu zu Qt und habe keine Ahnung, was das verursacht, fand keine anständigen Ergebnisse von Google. Ich habe bereits versucht, Qt5 (einschließlich des Erstellers) neu zu installieren, aber es hat nicht geholfen.


Meine .proj Datei sieht wie folgt aus:

TEMPLATE = app 
TARGET = test 

QT += \ 
    core \ 
    gui \ 
    widgets \ 

SOURCES += \ 
    main.cpp 

Und mein main.cpp sieht wie folgt aus:

#include <QApplication> 
#include <QWidget> 

int main(int argc, char **argv) 
{ 
    QApplication app(argc, argv); 
    QWidget window(); 
    window.show(); 
    return app.exec(); 
} 

Und das ist der gesamte Code ich habe.

Antwort

1

Wenn Sie eine Anwendung gebaut mit Qt zu starten, müssen Sie alle DLL von Qt-Module in Ihrem Code verwendet wird, erforderlich haben (Qt5Widgets.dll, Qt5Core .dll usw.) im selben Ordner wie Ihre Anwendung.

Sie können addLibraryPath() nicht zu diesem Zweck verwenden, da Ihr Programm vor dem Ausführen dieser Methode ausgeführt werden muss. Und es kann nicht ausgeführt werden, wenn es keine obligatorische Bibliothek im selben Ordner findet.

Sie benötigen auch einige andere Bibliotheken, um ein Qt5-Programm abhängig von den verwendeten Modulen auszuführen. Windows-spezifische sind hier aufgeführt Statically linked app with QT gives error: Failed to load platform plugin "windows".

Sie können auch andere Bibliotheken benötigen: - plugins/qjpeg.dll usw., wenn Sie Bilddateien in Ihre GUI laden möchten. - sqldivers/qsqlite.dll, etc. Wenn Sie Datenbank verwenden (Sie benötigen nur Treiber, die Sie verwenden) Für diese können Sie AddLibraryPath() verwenden, um bestimmte Standorte einzurichten, aber Sie sollten dies vermeiden und versuchen, so viel wie möglich zu setzen sie direkt im richtigen Unterordner in der Nähe Ihrer Anwendung.

Sie finden einige Informationen über Bibliotheken, die von jedem Qt5-Modul im Internet benötigt werden. Sie können auch in den Ordnern Ihrer bevorzugten Programme nachsehen, welche Bibliotheken von ihnen benötigt werden.

1

Ich hoffe, die folgenden wird Ihnen helfen, zu verstehen, warum: http://doc.qt.io/qt-5/deployment.html

+0

Danke für Ihre Antwort, das scheint die Lösung zu sein. Welchen Pfad sollte ich für 'addLibraryPath()' verwenden? Ich habe zwei verschiedene 'Qt5Widgets.dll' Dateien, die sich in den folgenden Verzeichnissen befinden:' C: \ Qt \ Qt5.0.2 \ 5.0.2 \ msvc2012_64 \ bin' und 'C: \ Qt \ Qt5.0.2 \ Tools \ QtCreator \ bin'. –

+0

Wenn Sie Ihr Projekt konfigurieren, zeigen Sie an, welches ein qt verwendet wird. In meinem Fall denke ich, es ist C: \ Qt \ Qt5.0.2 \ 5.0.2 \ msvc2012_64 \ bin – AnatolyS

+0

Link führt zu den so schönen Fehler 404. – BaldDude