Probleme nach build für statisches linken

Alles rund um die Programmierung mit Qt
Antworten
tommy_gun
Beiträge: 59
Registriert: 9. August 2005 16:51

Probleme nach build für statisches linken

Beitrag von tommy_gun »

guten morgen,

ich habe versucht qt4.3.1 für das statische linken zu bauen. bin dazu folgendermassen vorgegangen:

prompt> configure -static [other configure options]

prompt> mingw32-make sub-src

das ist alles problemlos gelaufen. im .pro file habe ich den eintrag CONFIG += static gemacht. will ich nun meine applikation erstellen, erscheinen die folgenden meldungen:

release\main.o(.text+0x7a):main.cpp: undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
release\main.o(.text+0xe4):main.cpp: undefined reference to `_imp___ZN7QObject7connectEPKS_PKcS1_S3_N2Qt14ConnectionTypeE'
release\main.o(.text+0xea):main.cpp: undefined reference to `_imp___ZN12QApplication4execEv'
release\moc_modbus_lrc.o(.text+0x112):moc_modbus_lrc.cpp: undefined reference to `_imp___ZN7QDialog16staticMetaObjectE'
collect2: ld returned 1 exit status

kann mir jemand sagen was diese meldungen bedeuten und wie ich das problem beheben kann?

danke für eure hilfe.

gruss
tommy
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Für mich sieht es so aus als würde QtGui nicht hinzugelinkt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
tommy_gun
Beiträge: 59
Registriert: 9. August 2005 16:51

Beitrag von tommy_gun »

hallo christian81,

so?? warum hat es funktioniert bevor ich qt statischen gebaut habe?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Oder Du hast vergessen main.o neu zu erstellen. das __imp deutet darauf hin dass dein Quellcode noch nicht neu (mit den statischen Compileroptionen) übersetzt wurde.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
tommy_gun
Beiträge: 59
Registriert: 9. August 2005 16:51

Beitrag von tommy_gun »

hallo christian81,

danke für deinen tipp, habe an meinen files kleine änderungen gemacht damit sie neu gebaut wurden. nun konnte ich die applikation kompilieren.

gruss
tommy
tommy_gun
Beiträge: 59
Registriert: 9. August 2005 16:51

Beitrag von tommy_gun »

hallo christian81,

nun bemeckert meine applikation auf einem anderen rechner als der entwicklungsrechner das die mingwm10.dll fehlt. wie linke ich diese dll statisch? muss ich mingw neu bauen?

gruss
tommy
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dazu gibt es schon genug Diskussionen (siehe auch qt-interest mailing list). Statisch linken geht nicht so ohne weiteres. Da sie aber nur 10KB gross ist sollte es eigentlich nicht stören.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag von gerome69 »

tommy_gun hat geschrieben:hallo christian81,
nun bemeckert meine applikation auf einem anderen rechner als der entwicklungsrechner das die mingwm10.dll fehlt. wie linke ich diese dll statisch? muss ich mingw neu bauen?
Entferne aus QTDIR\mkspecs\win32-g++\qmake.conf alle "-mthreads".

B.
tommy_gun
Beiträge: 59
Registriert: 9. August 2005 16:51

Beitrag von tommy_gun »

hallo gerome69,

und das hat keine negativen auswirkungen auf andere projekte?

Gruss
Tommy
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag von gerome69 »

tommy_gun hat geschrieben: und das hat keine negativen auswirkungen auf andere projekte?
Habe ich nie bemerkt und mache das schon eine ganze Weile so. So bekomme ich "echte" statische .exe's, die von nichts abhängen.

Das folgende weiß ich nicht sicher, lasse mich gerne korrigieren:
Ich denke, daß Qt über die QThread-Klassen eine eigenständige Threadverwaltung aufbaut und damit dieses "c++"-Low Level Threadhandling überflüssig ist.

G.
Antworten