Seite 1 von 1

[Qt4.1] [VisualStudio'03] statisch compilieren

Verfasst: 26. Januar 2006 01:44
von Esleborn
hi,
mal wieder das alte Thema...
ich will ein Project statisch linken... unter Windows, genauer Visual Studio 2003 . Net.
Wie zum Teufel bekomm ich das hin?

Die Dynamische Variante läuft (dank Patch) einwandfrei... nur die statische gibt beim compilieren immer linkerfehler in der Art von:

Code: Alles auswählen

QtGui.lib(qwininputcontext_win.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_ImmAssociateContext@8', verwiesen in Funktion '"public: static void __cdecl QWinInputContext::enable(class QWidget *,bool)" (?enable@QWinInputContext@@SAXPAVQWidget@@_N@Z)'
QtGui.lib(qwininputcontext_win.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_ImmSetCandidateWindow@8', verwiesen in Funktion '"public: virtual void __thiscall QWinInputContext::update(void)" (?update@QWinInputContext@@UAEXXZ)'
QtGui.lib(qwininputcontext_win.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_ImmSetCompositionWindow@8', verwiesen in Funktion '"public: virtual void __thiscall QWinInputContext::update(void)" (?update@QWinInputContext@@UAEXXZ)'
QtGui.lib(qwininputcontext_win.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_ImmSetCompositionFontA@8', verwiesen in Funktion '"public: virtual void __thiscall QWinInputContext::update(void)" (?update@QWinInputContext@@UAEXXZ)'
QtGui.lib(qwininputcontext_win.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_ImmSetCompositionFontW@8', verwiesen in Funktion '"public: virtual void __thiscall QWinInputContext::update(void)" (?update@QWinInputContext@@UAEXXZ)'
QtCore.lib(qeventdispatcher_win.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_WSAAsyncSelect@16', verwiesen in Funktion '"public: virtual void __thiscall QEventDispatcherWin32::registerSocketNotifier(class QSocketNotifier *)" (?registerSocketNotifier@QEventDispatcherWin32@@UAEXPAVQSocketNotifier@@@Z)'
NetClient.lib(net.client.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '"__declspec(dllimport) public: class QString & __thiscall QString::prepend(class QByteArray const &)" (__imp_?prepend@QString@@QAEAAV1@ABVQByteArray@@@Z)', verwiesen in Funktion '"public: virtual void __thiscall C_Client::TranslateNetworkInfo(class C_NetworkInfo &)" (?TranslateNetworkInfo@C_Client@@UAEXAAVC_NetworkInfo@@@Z)'
NetClient.lib(net.client.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '"__declspec(dllimport) public: class QString & __thiscall QString::append(class QByteArray const &)" (__imp_?append@QString@@QAEAAV1@ABVQByteArray@@@Z)', verwiesen in Funktion '"public: virtual void __thiscall C_Client::TranslateNetworkInfo(class C_NetworkInfo &)" (?TranslateNetworkInfo@C_Client@@UAEXAAVC_NetworkInfo@@@Z)'
QtNetwork.lib(qhostaddress.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '_htonl@4', verwiesen in Funktion '"public: void __thiscall QHostAddress::setAddress(struct sockaddr const *)" (?setAddress@QHostAddress@@QAEXPBUsockaddr@@@Z)'
QtNetwork.lib(qhostinfo_win.obj) : error LNK2019: Nicht aufgelöstes externes Symbol '__imp__gethostname@8', verwiesen in Funktion '"public: static class QString __cdecl QHostInfo::localHostName(void)" (?localHostName@QHostInfo@@SA?AVQString@@XZ)'
weiß irgendwer wie ich das lösen kann...?


Thx


Elgrimm Esleborn

Re: [Qt4.1] [VisualStudio'03] statisch compilieren

Verfasst: 26. Januar 2006 07:11
von macman
Da fehlen ein paar Libs. Guck in der Hilfe z.B. nach 'ImmAssociateContext' und schau welche Lib dafür nötig ist. Die bindest Du mit ein und fertig.

Verfasst: 26. Januar 2006 20:48
von Esleborn
also zuerstmal, waurm fügt Qt diese Libs nicht selbst ein? Macht es bei der dynamische Variante ja auch...

Zweitens und weit wichtiger:
Warum verhält sich Qt so statisch gebaut völlig anders, wie dynamisch?
Statt das gesamte Projekt funktioniert, werden fast alle Widgets komplet schwarz angezeigt usw....

Kann mir das einer erklären?

Verfasst: 26. Januar 2006 21:15
von Christian81
Esleborn hat geschrieben:also zuerstmal, waurm fügt Qt diese Libs nicht selbst ein? Macht es bei der dynamische Variante ja auch...
Na sowas aber auch :roll:

Verfasst: 26. Januar 2006 23:32
von Esleborn
und die ~500 Warnings wegen "lokal definierten Symbolen" kann mir auch keiner erklären, oder?

Verfasst: 27. Januar 2006 07:12
von macman
Esleborn hat geschrieben:also zuerstmal, waurm fügt Qt diese Libs nicht selbst ein? Macht es bei der dynamische Variante ja auch...
Seit wann werden bei der dynamischen Variante Libs eingebunden?
Esleborn hat geschrieben:Warum verhält sich Qt so statisch gebaut völlig anders, wie dynamisch?
Tut es gar nicht, zumindest nicht hier. Der einzige Unterschied ist, das das Ergebnis deutlich größer ist. Dafür braucht man auch keine DLLs mitliefern.

Verfasst: 27. Januar 2006 07:28
von Christian81
@Macman: Benutzt Du auch meinen Patch und hast du auch das Problem mit den Warnungen 'lokal definiertes Symbol wurde importiert'?

Oder anders geafrgt - geht es bei Dir ohne Probleme mit dem Patch?

Verfasst: 27. Januar 2006 08:13
von Christian81
Sieht so aus als hättest du Pech - bei mir funktioniert es tadellos (habe examples\tutorial\tutorial1 und den designer gebaut). Eventuell hast du die statischen und dynamsichen Libs irgendwie vermischt so dass es zu diesem Problem kommt...

Verfasst: 27. Januar 2006 10:45
von macman
Christian81 hat geschrieben:@Macman: Benutzt Du auch meinen Patch und hast du auch das Problem mit den Warnungen 'lokal definiertes Symbol wurde importiert'?
Nein, ich nutze die kommerzielle Version, weshalb ich deinen Patch nie probiert habe.