Seite 1 von 1

Probleme nach build für statisches linken

Verfasst: 14. August 2007 07:34
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

Verfasst: 14. August 2007 07:45
von Christian81
Für mich sieht es so aus als würde QtGui nicht hinzugelinkt.

Verfasst: 14. August 2007 07:56
von tommy_gun
hallo christian81,

so?? warum hat es funktioniert bevor ich qt statischen gebaut habe?

Verfasst: 14. August 2007 08:05
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.

Verfasst: 14. August 2007 09:21
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

Verfasst: 14. August 2007 09:39
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

Verfasst: 14. August 2007 09:56
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.

Verfasst: 14. August 2007 10:24
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.

Verfasst: 14. August 2007 10:46
von tommy_gun
hallo gerome69,

und das hat keine negativen auswirkungen auf andere projekte?

Gruss
Tommy

Verfasst: 14. August 2007 10:50
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.