QT release build für app in debug mode

Verschiedenes zu Qt
Antworten
PiCiJi
Beiträge: 9
Registriert: 30. Juli 2009 19:53

QT release build für app in debug mode

Beitrag von PiCiJi »

Hallo Leute,

ich habe gelesen, dass ich die qt sdk nicht zwingend als debug build benötige, solange ich nur meinen eigenen Programm code debuggen möchte. Also habe ich mir QT einmal als shared release und einmal als static release gebaut.

Meine app verwendet im release mode QT static und im debug mode QT shared. Im debug mode erwartet meine app jedoch auch die debug dlls von QT, z.b. QtGuid4 oder QtCored4.

Ich denke mal ich muss irgendwas überzeugendes ins pro file schreiben oder ist die erste Aussage meines postings falsch und ich benötige zwingend die QT sdk im debug mode um auch meinen eigenen code debuggen zu können?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QT release build für app in debug mode

Beitrag von Christian81 »

Wenn Du qmake benutzt und debug dann erwartet qmake auch, dass die Qt-Dlls im Debug-Mode vorliegen. Das liegt an Microsoft da man keine Debug- und Release-Dlls (und natürlich auch executables) mixen kann wegen einer unterschiedlichen Runtime. Frag M$ warum sie so einen Mist gemacht haben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
PiCiJi
Beiträge: 9
Registriert: 30. Juli 2009 19:53

Re: QT release build für app in debug mode

Beitrag von PiCiJi »

Danke, ich habe die QT SDK shared release gegen eine shared debug getauscht.
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QT release build für app in debug mode

Beitrag von brax »

Christian81 hat geschrieben:Wenn Du qmake benutzt und debug dann erwartet qmake auch, dass die Qt-Dlls im Debug-Mode vorliegen. Das liegt an Microsoft da man keine Debug- und Release-Dlls (und natürlich auch executables) mixen kann wegen einer unterschiedlichen Runtime. Frag M$ warum sie so einen Mist gemacht haben.
Komisch, ich hatte nie ein Problem damit release dlls zu debug executables zu linken und habe auch zur Laufzeit nie Probleme feststellen können. Weder bei Qt noch bei irgendwelchen anderen Bibliotheken.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QT release build für app in debug mode

Beitrag von Christian81 »

Welcher Compiler? Sobald man verschiedene VisualStudio Runtimes benutzt (msvcrt & msvcrtd) gibts früher oder später Probleme. Reicht schon einen std::string von msvcrt an eine msvcrtd - Funktion zu übergeben, oder ein Filehandel. Deshalb nie mixen zumal die Debug-Runtimes sowieso nicht vertrieben werden dürfen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QT release build für app in debug mode

Beitrag von brax »

Christian81 hat geschrieben:Welcher Compiler?
Ich benutze das Visual Studio seit VC6 (ja, ich weiß, damals war es nun wirklich kein C++ Compiler...) auch im Beruf. Es gab immer Bibliotheken, die nur als release Version zur Verfügung standen. Ich hatte nie ein Problem damit, irgendwas zu mischen (abgesehen von der Warnung "pdb not found; linking object as if no debug info"). Wenn Du wirklich Compilerversionen hören willst, dann unterstützt unsere C++ Schnittstelle derzeit die cl.exe Versionen 14, 15, 16 und 17 (also VS 2005-2012) mit der wir das auch täglich (sehr umfangreich automatisiert) testen (sowohl release als auch debug) und die sehr umfangreichen Tests (die ständig mehr werden) laufen problemlos durch (und ja... wir unterstützen auch alle halbwegs aktuellen gcc Versionen) [die 14er Version wird nur auf XP getestet, weil die auf Vista und Win7 eh nur Mist macht].
Christian81 hat geschrieben: gibts früher oder später Probleme
Ich nehme an, dass Du mir jetzt sagst, dass die Probleme dann eben später auftreten, aber ich bin da nach knapp 6 Jahren ohne Probleme (in dieser Richtung) recht zuversichtlich...


P.S.: Es ist schon lange nicht mehr cool "M$" zu schreiben... Die wahren Bösen sind doch inzwischen Apple und Google... ;)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QT release build für app in debug mode

Beitrag von Christian81 »

Ich habe nicht gesagt dass es nicht geht - ich habe nur gesagt dass man msvcrt und msvcrtd - nicht mischen sollte denn sie sind inkompatibel. Erzeugt man ein Objekt/Handle /´(z.B. FileHandle) aus der einen Lib und gibt es der anderen und schon crash. Kannst auch google befragen.
Und ja - es ist M$ bei mir - da wird sich nichts dran ändern. Habe genug damit gearbeitet - kannst mir glauben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: QT release build für app in debug mode

Beitrag von RHBaum »

Komisch, ich hatte nie ein Problem damit release dlls zu debug executables zu linken und habe auch zur Laufzeit nie Probleme feststellen können. Weder bei Qt noch bei irgendwelchen anderen Bibliotheken.
Sollte auch nicht das problem sein ...
Unterschiedliche runtimes in ner exe und in ner dll(qt-dlls) nutzen ist zwar unschoen, funktioniert aber doch ...
wenn deine exe 2 runtimes wegens einer lib anzieht (der compiler meckert zwar, aber solange die symbole nicht kollidieren) auch unschoen, geht aber unter umstaenden auch.
Da debug und release meist unterschiedliche symbolnamen generieren, funktionierts.
/ Edit, noch mal geschaut
Neee, beim M$ - Compiler erzeugens zumindest gleiche Symbole (ohne zutun), also gehts da nicht 2 runtimes ohne weiteres zu linken ...
Aber in nem debug Build die relase lib der qt, und damit auch die release dlls anzuziehen, funktioniert auf anhieb.
D.h. die qt lib und dll exportieren ned wirklich wilde c++ sachen .... wahrscheinlich doch eher nur c-zeugs

nur schoen ist es nicht !

Ciao ...

P.S.S.:
P.S.: Es ist schon lange nicht mehr cool "M$" zu schreiben... Die wahren Bösen sind doch inzwischen Apple und Google...
Stimmt, aber ändert das was an den (wahren) Absichten von M$ ? Nur weil andere nu ... mehr Erfolg ... haben ?
Antworten