Plattform Windows 7/64
Qt 4.7.4/32
Schönen guten Tag. Bin neu hier. Meine erste Frage:
Ich habe ein Projekt gebaut (sqlitebrowser.exe). sqlite3.obj scheint statisch eingebunden zu sein. Brauche also schon mal keine sqlite3.dll. Wenn ich aber die EXE irgendwo starten will, erscheint eine Alertbox, die da sagt, daß Qt3Support4.dll fehle.
Nicht so, wenn ich die Release-Exe aus dem QtCreator heraus starte.
Würde gerne eine statisch gelinkte EXE bauen, wo ich dann keine
zusätzlichen DLLs verschicken muß.
Läßt sich das im Projekt im QtCreator irgendwie einstellen?
Danke und Grüße
--
Christoph
Statisch linken
Eine Dll wirst immer brauchen. und zwar die c/c++ runtime. Weil, wenn ich die trolltechler richtig verstanden hab, sich die qt nicht gegen eine statisch gelinkte runtime compilieren laesst.
Was auch immer die fuer schmutz da machen.
Was aber viel schlimmer ins Auge sticht:
Qt 4.7.4/32
Qt3Support4.dll
Du verwendest qt3 klassen unter qt4 ?
Warum ? oder linkst was, was eigentlich ned brauchst ?
Prinzipiell kannst du die Qt auch statisch linken.
aber da wird dir kein passendes Installationspacket angeboten.
Du musst die qt dann selbst compilieren und bauen.
Also die Source distri downloaden und auspacken.
Install und Readme files lesen ... Install und Readme files nochmal lesen ...
dann am Cmd-Prompt dein configure mit den richtigen parametern aufrufen -> Siehe: Install und Readme files lesen
Ab hier hab ichs noch ned gemacht, sondern ich hab immer VC verwendet, da gibts leichte unterschiede
aber am Cmd-Prompt make -f dein_zuständiges_maekefile aufrufen, und kaffeetrinken gehen, sollte so falsch ned sein ...
Danach das Komplette verzichniss an den richtigen Ort kopieren (weiss ned wie und wo das unter mingw am besten ist, bei VC ist c:\Qt\4.7.4_static ne gute wahl)
In deinem Build Tool (QT Creator) die neue Version einpflegen bzw die QT-variablen setzen (bei mir macht das QT plugin fuer VC) und kompilieren.
Bei vorhandenen projekten kann noch sein, das die linker einstellungen fuer die qt libs anpassen musst. bei mir aendern die sich von qtcore4d.lib auf qtcored.lib usw. keine ahnung warum die libs sich beim uebersetzen dann unterscheiden ....
Deine exe sollte dann nur noch die c++ runtimes brauchen, oder du hasst uns abhengigkeiten verschwiegen
Die c++ runtimes fuer den gcc wirst beilegen muessen. Beim VC werden die vom Windows Update meist mit distributiert, oder es gibt fertig downloadbare installationspackete (redistributables).
Manchmal ist es halt einfacher auf der dunklen Seite der Macht .... aber nur manchmal
Ciao ...
Was auch immer die fuer schmutz da machen.
Was aber viel schlimmer ins Auge sticht:
Qt 4.7.4/32
Qt3Support4.dll
Du verwendest qt3 klassen unter qt4 ?
Warum ? oder linkst was, was eigentlich ned brauchst ?
Prinzipiell kannst du die Qt auch statisch linken.
aber da wird dir kein passendes Installationspacket angeboten.
Du musst die qt dann selbst compilieren und bauen.
Also die Source distri downloaden und auspacken.
Install und Readme files lesen ... Install und Readme files nochmal lesen ...
dann am Cmd-Prompt dein configure mit den richtigen parametern aufrufen -> Siehe: Install und Readme files lesen
Ab hier hab ichs noch ned gemacht, sondern ich hab immer VC verwendet, da gibts leichte unterschiede
aber am Cmd-Prompt make -f dein_zuständiges_maekefile aufrufen, und kaffeetrinken gehen, sollte so falsch ned sein ...
Danach das Komplette verzichniss an den richtigen Ort kopieren (weiss ned wie und wo das unter mingw am besten ist, bei VC ist c:\Qt\4.7.4_static ne gute wahl)
In deinem Build Tool (QT Creator) die neue Version einpflegen bzw die QT-variablen setzen (bei mir macht das QT plugin fuer VC) und kompilieren.
Bei vorhandenen projekten kann noch sein, das die linker einstellungen fuer die qt libs anpassen musst. bei mir aendern die sich von qtcore4d.lib auf qtcored.lib usw. keine ahnung warum die libs sich beim uebersetzen dann unterscheiden ....
Deine exe sollte dann nur noch die c++ runtimes brauchen, oder du hasst uns abhengigkeiten verschwiegen
Die c++ runtimes fuer den gcc wirst beilegen muessen. Beim VC werden die vom Windows Update meist mit distributiert, oder es gibt fertig downloadbare installationspackete (redistributables).
Manchmal ist es halt einfacher auf der dunklen Seite der Macht .... aber nur manchmal
Ciao ...
Ich baue nur ein vorhandenes Projekt (sqlitebrowser). Das ist halt so eingestellt.RHBaum hat geschrieben:Eine Dll wirst immer brauchen. und zwar die c/c++ runtime. Weil, wenn ich die trolltechler richtig verstanden hab, sich die qt nicht gegen eine statisch gelinkte runtime compilieren laesst.
Was auch immer die fuer schmutz da machen.
Was aber viel schlimmer ins Auge sticht:
Qt 4.7.4/32
Qt3Support4.dll
Du verwendest qt3 klassen unter qt4 ?
Warum ? oder linkst was, was eigentlich ned brauchst ?
Aber ich sehe gerade, daß die wohl auch einen Haufen Qt-DLLs mit ausliefern:
Qt3Support4.dll
QtCore4.dll
QtGui4.dll
QtNetwork4.dll
QtSql4.dll
QtXml4.dll
libgcc_s_dw2-1.dll
mingwm10.dll
Muß mich wohl damit abfinden. Es sei denn ich steige voll ein und baue den ganzen Summs. Aber das Nachstehende - danke für die Ausführlichkeit! - kann mich eher nicht Erwärmen, mir das anzutun.
Ich benutze VS2008 innerhalb des QtCreator. Jedenfalls interessant zu lesen, daß es auch den umgekehrten Weg geht, Qt in VS2008 zu Kompilieren. Ja, irgendwie muß man ja mal zu einer ausführbaren Version von QtCreator gekommen sein. Sei es mit MinGW oder mit MSVC.
Würde es lieber vorziehen, nmake oder VS zu benutzen.RHBaum hat geschrieben: Prinzipiell kannst du die Qt auch statisch linken.
aber da wird dir kein passendes Installationspacket angeboten.
Du musst die qt dann selbst compilieren und bauen.
Also die Source distri downloaden und auspacken.
Install und Readme files lesen ... Install und Readme files nochmal lesen ...
dann am Cmd-Prompt dein configure mit den richtigen parametern aufrufen -> Siehe: Install und Readme files lesen
Danke noch mal,RHBaum hat geschrieben:
Ab hier hab ichs noch ned gemacht, sondern ich hab immer VC verwendet, da gibts leichte unterschiede![]()
aber am Cmd-Prompt make -f dein_zuständiges_maekefile aufrufen, und kaffeetrinken gehen, sollte so falsch ned sein ...
Danach das Komplette verzichniss an den richtigen Ort kopieren (weiss ned wie und wo das unter mingw am besten ist, bei VC ist c:\Qt\4.7.4_static ne gute wahl)
In deinem Build Tool (QT Creator) die neue Version einpflegen bzw die QT-variablen setzen (bei mir macht das QT plugin fuer VC) und kompilieren.
Bei vorhandenen projekten kann noch sein, das die linker einstellungen fuer die qt libs anpassen musst. bei mir aendern die sich von qtcore4d.lib auf qtcored.lib usw. keine ahnung warum die libs sich beim uebersetzen dann unterscheiden ....
Deine exe sollte dann nur noch die c++ runtimes brauchen, oder du hasst uns abhengigkeiten verschwiegen![]()
Die c++ runtimes fuer den gcc wirst beilegen muessen. Beim VC werden die vom Windows Update meist mit distributiert, oder es gibt fertig downloadbare installationspackete (redistributables).
Manchmal ist es halt einfacher auf der dunklen Seite der Macht .... aber nur manchmal![]()
Ciao ...
Christoph
Haeh ?Ich benutze VS2008 innerhalb des QtCreator.
Dann bist Du ja schon halb auf der Dunklen Seite
Warum nutzt du den QTCreator ???
die VS-IDE ist doch um Welten "toller"
Oder Nutzt du gar nur Express Version ? Abtruenniger !
Besser nutzt man auch die Energie, um nen tolles Setup zu bauen. Das Danken einem die Jüngerer um welten mehr, als das man nur ne exe irgendwohin kopieren braucht und aufzurufen ! (ohne verknuepfung auf Desktop findet der Frischling das doch nie wieder nach dem naechsten rebootkann mich eher nicht Erwärmen, mir das anzutun.
Ciao ...
-
ScyllaIllciz
- Beiträge: 200
- Registriert: 9. Juli 2010 19:31
Vielleicht reden wir aneinander vorbei oder ich habe nicht die richtige Terminologie benutzt.
Ich benutze normalerweise VS2008 und VS2010 um .Net-Anwendungen zu entwickeln.
Jetzt brauchte ich eine aktuelle Version von SQLiteBrowser (Sourceforge).
Um die zu bauen, mußte ich erst mal Qt installieren, weil es im Sourcetree von SQLitebrowser nur ein Qt-Project gibt. Da ich aber nicht noch MinGW installieren wollte und ohnehin VSDEV 9 und 10 schon installiert habe, benutze ich den VS C-Compiler aus Qt-Creator heraus. Weiß nicht, ob das in dem Projectfile bereits eingestellt war, oder ob ich das durch Aufrufen von Qmake auf der Kommandozeile konfiguriert habe.
Soweit zur Benutzung von VS (MSVC) aus Qt-Creator heraus.
Ich finde zwar Qt-Creator ganz nett , aber eigentlich will ich im Moment nicht noch ein neues IDE, nach VS, Netbeans, Eclipse lernen
sondern nur eine .EXE bauen, die ich benutzen will.
Evtl. dachte ich, die auch anderen zur Verfügung zu stellen, deshalb die Frage nach dem stat. Linken.
Im Moment gelingt es mir nicht, die erzeugte .EXE außerhalb des Qt-Creators aufzurufen, weil dann jede Menge DLLs fehlen, angefangen mit Qt3support4.dll (im PRO-File steht übrigens QT += qt3support, warum auch immer).
Meint Ihr, ich komme besser weg, wenn ich ganz Qt im VS kompiliere und zu meinem Projekt SQLItebrowser hinzufüge?
--
Grüße
Christoph
Ich benutze normalerweise VS2008 und VS2010 um .Net-Anwendungen zu entwickeln.
Jetzt brauchte ich eine aktuelle Version von SQLiteBrowser (Sourceforge).
Um die zu bauen, mußte ich erst mal Qt installieren, weil es im Sourcetree von SQLitebrowser nur ein Qt-Project gibt. Da ich aber nicht noch MinGW installieren wollte und ohnehin VSDEV 9 und 10 schon installiert habe, benutze ich den VS C-Compiler aus Qt-Creator heraus. Weiß nicht, ob das in dem Projectfile bereits eingestellt war, oder ob ich das durch Aufrufen von Qmake auf der Kommandozeile konfiguriert habe.
Soweit zur Benutzung von VS (MSVC) aus Qt-Creator heraus.
Ich finde zwar Qt-Creator ganz nett , aber eigentlich will ich im Moment nicht noch ein neues IDE, nach VS, Netbeans, Eclipse lernen
Evtl. dachte ich, die auch anderen zur Verfügung zu stellen, deshalb die Frage nach dem stat. Linken.
Im Moment gelingt es mir nicht, die erzeugte .EXE außerhalb des Qt-Creators aufzurufen, weil dann jede Menge DLLs fehlen, angefangen mit Qt3support4.dll (im PRO-File steht übrigens QT += qt3support, warum auch immer).
Meint Ihr, ich komme besser weg, wenn ich ganz Qt im VS kompiliere und zu meinem Projekt SQLItebrowser hinzufüge?
--
Grüße
Christoph
Also Fakt ist:
QT-Dlls nutzen keine C-Dll Schnittstellen.
d.h. deine QT Dlls muessen mit dem compiler uebersetzt sein, mit dem auch die .exe uebersetzt wird.
übersetzt mit dem VS compiler, solltest an fertig compilierte qt-dlls rankommen (Ausser VS 2010, weil das wird offiziell noch ned supoorted von der QT)
Aber es ist nicht so schwer, das auch selber zu machen ... (bei VS 2010 musst es soweiso)
Statsich linken der Qt ist sicher auch viel gschmackssache. Mit dem linkerthema musst dich eh auseinandersetzen. Also wird ichs vom featurewunsch abhaengig machen. willst keine qt-dlls mit zu der exe ausliefern wollen ->statisch.
Ciao ...
QT-Dlls nutzen keine C-Dll Schnittstellen.
d.h. deine QT Dlls muessen mit dem compiler uebersetzt sein, mit dem auch die .exe uebersetzt wird.
übersetzt mit dem VS compiler, solltest an fertig compilierte qt-dlls rankommen (Ausser VS 2010, weil das wird offiziell noch ned supoorted von der QT)
Aber es ist nicht so schwer, das auch selber zu machen ... (bei VS 2010 musst es soweiso)
Statsich linken der Qt ist sicher auch viel gschmackssache. Mit dem linkerthema musst dich eh auseinandersetzen. Also wird ichs vom featurewunsch abhaengig machen. willst keine qt-dlls mit zu der exe ausliefern wollen ->statisch.
Ciao ...