Seite 1 von 2
Anfänger: mit QT erstelle *.exe auf jedem Windows
Verfasst: 13. Februar 2007 20:44
von MiltenDawn
Hallo,
Dies ist mein erster Beitrag hier. Deswegen bitte killt mich bitte nicht direkt, wenn ich ausversehen das Falsche Forum genommen habe...
Die SF habe ich benutzt und auch eine Menge gefunden, jedoch nichts, was ich verstehen würde.
Hier also dann mal meine Frage:
Wie kann ich mit QT geproggte Exe-Dateien unter allen Windows Systemen ausführen? Auf meinem eigenen PC, wo natürlich auch QT installiert ist, geht das. Jetzt würde ich aber gerne Programme schreiben, die JEDER auf seinem PC ausführen kann, ohen sich vorher den ganzen Kram zu downloaden. Habe schon gelesen, dass ich unter Windows irgendwie die Libs hinzufügen soll?! Habe jedoch leider nicht die geringste Idee, wie man das machen soll...
mfg Milten
Verfasst: 13. Februar 2007 22:08
von gxr90
Hi
ich bin selbst noch blutiger Anfänger und kann dir daher nicht wirklich helfen. Mir ist aber beim durchstöbern des Forums dieser Thread aufgefallen:
http://qtforum.de/forum/viewtopic.php?t=3379
Ich hoffe das dir das wenigstens ansatzweise hilft.
Gruß gxr
Verfasst: 13. Februar 2007 22:12
von franzf
Diese ominösen Libs befinden sich im bin-Verzeichnis deiner Qt-Installation (zumindest ist es bei qt4 so...):
Im Regelfal benötigst du hier:
* QtCore4.dll
* QtGui4.dll
Wenn du XML in deinem Projekt verwendest benötigst du noch QtXml4.dll.
Solltest du deine Projekte mit dem MinGW compilieren (ist der Standard bei der OpenSource-Version) kopier bitte noch die mingwm10.dll aus dem bin-Verzeichnis deiner MinGW-Installation.
Die Datein dann einfach in den Ordner mit der *.exe kopieren, nach belieben Zippen und verteilen
Grüße
Franz
Verfasst: 14. Februar 2007 12:12
von gerome69
franzf hat geschrieben:Diese ominösen Libs befinden sich im bin-Verzeichnis deiner Qt-Installation (zumindest ist es bei qt4 so...):
Im Regelfal benötigst du hier:
* QtCore4.dll
* QtGui4.dll
Wenn du XML in deinem Projekt verwendest benötigst du noch QtXml4.dll.
Solltest du deine Projekte mit dem MinGW compilieren (ist der Standard bei der OpenSource-Version) kopier bitte noch die mingwm10.dll aus dem bin-Verzeichnis deiner MinGW-Installation.
Die Datein dann einfach in den Ordner mit der *.exe kopieren, nach belieben Zippen und verteilen
Ergänzend: Immer wieder kommt auch die Frage, warum zB JPEG-Bilder auf dem Zielrechner nicht zu sehen sind.
Antwort: ggfs. aus plugins/imageformats die passende dll noch hinzufügen.
B.
Verfasst: 14. Februar 2007 14:21
von -=Freaky=-
dazu habe ich noch eine frage:
ist eiegtnlich allgemein möglich, anstatt einzelne dateien (*.dll, *.exe, *.???, *.etc, *.uvm), die vom programm gebraucht werden, wie z.B. diese dlls, als ressourcen mit in der exe zu kompilieren, sodas man nue eine datei verteilen muss?
mg,
julian
Verfasst: 14. Februar 2007 14:46
von Christian81
-=Freaky=- hat geschrieben:dazu habe ich noch eine frage:
ist eiegtnlich allgemein möglich, anstatt einzelne dateien (*.dll, *.exe, *.???, *.etc, *.uvm), die vom programm gebraucht werden, wie z.B. diese dlls, als ressourcen mit in der exe zu kompilieren, sodas man nue eine datei verteilen muss?
Forensuche: statisch linken
Verfasst: 14. Februar 2007 15:13
von MiltenDawn
hi Leute,
Erstmal Danke für die schnellen Antworten!
Könnt ihr mir vielleicht nochmla genau sagen was ich machen soll? Am besten Schritt für Schritt!
mfg Milten
Verfasst: 14. Februar 2007 15:18
von franzf
MiltenDawn hat geschrieben:Könnt ihr mir vielleicht nochmla genau sagen was ich machen soll? Am besten Schritt für Schritt!
gerne:
franzf hat geschrieben:Diese ominösen Libs befinden sich im bin-Verzeichnis deiner Qt-Installation (zumindest ist es bei qt4 so...):
Im Regelfal benötigst du hier:
* QtCore4.dll
* QtGui4.dll
Wenn du XML in deinem Projekt verwendest benötigst du noch QtXml4.dll.
Solltest du deine Projekte mit dem MinGW compilieren (ist der Standard bei der OpenSource-Version) kopier bitte noch die mingwm10.dll aus dem bin-Verzeichnis deiner MinGW-Installation.
Die Datein dann einfach in den Ordner mit der *.exe kopieren, nach belieben Zippen und verteilen.

Verfasst: 14. Februar 2007 15:26
von MiltenDawn
franzf hat geschrieben:MiltenDawn hat geschrieben:Könnt ihr mir vielleicht nochmla genau sagen was ich machen soll? Am besten Schritt für Schritt!
gerne:
franzf hat geschrieben:Diese ominösen Libs befinden sich im bin-Verzeichnis deiner Qt-Installation (zumindest ist es bei qt4 so...):
Im Regelfal benötigst du hier:
* QtCore4.dll
* QtGui4.dll
Wenn du XML in deinem Projekt verwendest benötigst du noch QtXml4.dll.
Solltest du deine Projekte mit dem MinGW compilieren (ist der Standard bei der OpenSource-Version) kopier bitte noch die mingwm10.dll aus dem bin-Verzeichnis deiner MinGW-Installation.
Die Datein dann einfach in den Ordner mit der *.exe kopieren, nach belieben Zippen und verteilen.

Das heißt, ich soll meine kompilierte exe zusammen mit QTCore4.dll und QTgui4.dll in einen Ordner packen und dann kann ich diesen Ordner auf jeden beliebigen "Windows PC" verschieben und die exe dort ausführen?
mfg Milten
Verfasst: 14. Februar 2007 16:03
von franzf
MiltenDawn hat geschrieben:franzf hat geschrieben:MiltenDawn hat geschrieben:Könnt ihr mir vielleicht nochmla genau sagen was ich machen soll? Am besten Schritt für Schritt!
gerne:
franzf hat geschrieben:Diese ominösen Libs befinden sich im bin-Verzeichnis deiner Qt-Installation (zumindest ist es bei qt4 so...):
Im Regelfal benötigst du hier:
* QtCore4.dll
* QtGui4.dll
Wenn du XML in deinem Projekt verwendest benötigst du noch QtXml4.dll.
Solltest du deine Projekte mit dem MinGW compilieren (ist der Standard bei der OpenSource-Version) kopier bitte noch die mingwm10.dll aus dem bin-Verzeichnis deiner MinGW-Installation.
Die Datein dann einfach in den Ordner mit der *.exe kopieren, nach belieben Zippen und verteilen.

Das heißt, ich soll meine kompilierte exe zusammen mit QTCore4.dll und QTgui4.dll in einen Ordner packen und dann kann ich diesen Ordner auf jeden beliebigen "Windows PC" verschieben und die exe dort ausführen?
mfg Milten
Genau so geht es

Verfasst: 14. Februar 2007 16:25
von MiltenDawn
franzf hat geschrieben:MiltenDawn hat geschrieben:franzf hat geschrieben:MiltenDawn hat geschrieben:Könnt ihr mir vielleicht nochmla genau sagen was ich machen soll? Am besten Schritt für Schritt!
gerne:
franzf hat geschrieben:Diese ominösen Libs befinden sich im bin-Verzeichnis deiner Qt-Installation (zumindest ist es bei qt4 so...):
Im Regelfal benötigst du hier:
* QtCore4.dll
* QtGui4.dll
Wenn du XML in deinem Projekt verwendest benötigst du noch QtXml4.dll.
Solltest du deine Projekte mit dem MinGW compilieren (ist der Standard bei der OpenSource-Version) kopier bitte noch die mingwm10.dll aus dem bin-Verzeichnis deiner MinGW-Installation.
Die Datein dann einfach in den Ordner mit der *.exe kopieren, nach belieben Zippen und verteilen.

Das heißt, ich soll meine kompilierte exe zusammen mit QTCore4.dll und QTgui4.dll in einen Ordner packen und dann kann ich diesen Ordner auf jeden beliebigen "Windows PC" verschieben und die exe dort ausführen?
mfg Milten
Genau so geht es

Habe das gerade mal ausprobiert. Leder passiert auf dem PC überhaupt nichts, wenn ich auf die exe klicke. Ob nun mit DLLs oder ohne... Es kommt zwar keine Fehlermeldung, allerdings öffnet sic auch nichts.
Hast du vielleicht ne Idee voran das nun wieder liegen könnte?!
mfg Milten
Verfasst: 15. Februar 2007 07:28
von macman
MiltenDawn hat geschrieben:Hast du vielleicht ne Idee voran das nun wieder liegen könnte?!
Ich misch mich mal ein. Soll man jetzt raten? Es könnte durchaus sein das dein Programm noch andere DLLs benötigt, teste das mit Depends.exe. Oder es kommt nicht mit der anderen Umgebung zurecht, findet Dateien nicht usw. Da ist debuggen angesagt. Bau ein paar MsgBoxen ein oder schreib Positionen und Stati in eine Datei, um herauszufinden wo es aussteigt.
Verfasst: 15. Februar 2007 16:19
von MiltenDawn
Also das hier ist mein SourceCode:
Code: Alles auswählen
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication meinProgramm(argc, argv);
QLabel *halloWelt = new QLabel("Hallo Milten!");
halloWelt->show();
meinProgramm.exec();
}
Das habe ich als exe kompiliert und auf den PC von meinem Vater verschoben. Ohne die DLLs passier gar nichts, wenn ich es starte. Habe jetzt die mingwm10.dll, QtGui4.dll & QtCore4.dll in den selben Ordner gepackt. leider passiert immer noch nichts...
Hat denn keiner eine Idee, voran das liegen könnte?
mfg Milten
Edit: Ok, habe es nun endlich geschafft! Vielen Dank für eure Hilfe! Das hat mir wirklich geholfen!
Falls ihr immernoch Lust habt ne Frage zu beantworten:
Gibt's auch eine Möglichkeit, der exe zu sagen, wo sie die DLLs suchen soll, damit ich sie nicht immer im gleichen Ordner wie die exe liegen haben muss?
Verfasst: 15. Februar 2007 19:56
von -=Freaky=-
wahrscheinlich funktioniert das, wenn die dlls irgendwo in einem systempfad liegen, also unter windows z.B. ein einem verzeichnis aus PATH (umgebungsvariable), wie z.B. X:\WINDOWS\system32. dann brauchst du am programm nichts ändern.
mfg,
julian
Verfasst: 15. Februar 2007 20:37
von MiltenDawn
Vielen Dank für den Tipp!
Das kann ich mir dann ja später nochmal angucken... Wollte nur halt sicher gehen, das es funktionieren würde.
Ich hoffe, ich nerve euch nicht, aber ich habe schon wieder eine Frage:
Welche Dateien muss ich noch linken wenn ich dieses Script habe?
Code: Alles auswählen
#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("Enter Your Age");
QSpinBox *spinBox = new QSpinBox;
QSlider *slider = new QSlider(Qt::Horizontal);
spinBox->setRange(0, 130);
slider->setRange(0, 130);
QObject::connect(spinBox, SIGNAL(valueChanged(int)),
slider, SLOT(setValue(int)));
QObject::connect(slider, SIGNAL(valueChanged(int)),
spinBox, SLOT(setValue(int)));
spinBox->setValue(35);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(spinBox);
layout->addWidget(slider);
window->setLayout(layout);
window->show();
return app.exec();
}
QtCore4.dll, QtGui4.dll & Mingwm10.dll reichen dem nämlich irgendwie nicht...
mfg Milten