Anfänger: mit QT erstelle *.exe auf jedem Windows

Verschiedenes zu Qt
MiltenDawn
Beiträge: 16
Registriert: 13. Februar 2007 20:39

Anfänger: mit QT erstelle *.exe auf jedem Windows

Beitrag 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
gxr90
Beiträge: 2
Registriert: 12. Februar 2007 21:01

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag 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.
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
MiltenDawn
Beiträge: 16
Registriert: 13. Februar 2007 20:39

Beitrag von MiltenDawn »

hi Leute,
Erstmal Danke für die schnellen Antworten! :D

Könnt ihr mir vielleicht nochmla genau sagen was ich machen soll? Am besten Schritt für Schritt!


mfg Milten
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
;)
MiltenDawn
Beiträge: 16
Registriert: 13. Februar 2007 20:39

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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 :)
MiltenDawn
Beiträge: 16
Registriert: 13. Februar 2007 20:39

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
MiltenDawn
Beiträge: 16
Registriert: 13. Februar 2007 20:39

Beitrag 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?
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag 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
MiltenDawn
Beiträge: 16
Registriert: 13. Februar 2007 20:39

Beitrag 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
Antworten