wxWidgets Programme schreiben
-
wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib odbc32.lib
Das ist jetzt nur ein wahlloses Beispiel. Welche Bibliotheken wirklich gebraucht werden, und welche nicht, hängt selbstverständlich von Deinem Projekt ab, also welche wx Komponenten Du darin verwendest.
-
Danke schonmal, aber welche libs genau muss man linken? Woher weiß man das denn immer?
Ich habe jetzt diese libs gelinkt:wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib odbc32.lib
Trozdem kommen diese Fehler:
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual bool __thiscall wxApp::Initialize(int &,wchar_t * *)" (?Initialize@wxApp@@UAE_NAAHPAPA_W@Z)". 1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""protected: void __thiscall wxStringBase::InitWith(wchar_t const *,unsigned int,unsigned int)" (?InitWith@wxStringBase@@IAEXPB_WII@Z)". 1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)". 1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxStatusLineNameStr" (?wxStatusLineNameStr@@3QB_WB)". 1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxFrameNameStr" (?wxFrameNameStr@@3QB_WB)".
-
Sieht für mich danach aus, als ob du nen Unicodebuild machen willst, aber WxWidgets nicht Unicode kompiliert hättest
-
Danke!
Ich habe nun die libswxmsw28_core.lib wxbase28.lib comctl32.lib
eingebunden und den Zeichensatz auf 'nicht festgelegt' eingestellt. Nun funktioniert alles.
-
Nun würde mich aber interessieren, wi ich Unicode benutzen kann.
Muss ich beim kompilieren von wxWidgets in den Projekteinstellungen einfach Unicode eingeben?
-
botani schrieb:
Nun würde mich aber interessieren, wi ich Unicode benutzen kann.
Muss ich beim kompilieren von wxWidgets in den Projekteinstellungen einfach Unicode eingeben?Wenn ich dies laut doku recht verstehe musst du UNICODE oder _UNICODE_ definieren um UNICODE nutzen zu können.
%msvc If UNICODE or _UNICODE is defined (as it is on the command line in the Unicode configurations of the VC++ project files), then wxUSE_UNICODE gets defined automatically in wx/wxchar.h. %% if you enable wxUSE_UNICODE in the original setup.h, and build all eight configurations, you're going to have eight unicode builds instead of four ANSI and four Unicode.
Ebenfalls müssen deine Strings / Texte in einem wxT, _T (Synonym für wxT) oder _() Makro eingebettet sein.
Always enclose literal string constants in the wxT() or _T() macro (they are synonymous), except when you intend to pass the constant directly to an external function which doesn't accept wide-character strings. If you want to translate the string, use _() instead
Mehr dazu findest du auch unter
http://www.wxwidgets.org/manuals/stable/wx_unicode.html
http://www.wxwidgets.org/wiki/index.php/Unicode
-
Mh also ich habe jetzt
#define wxUSE_UNICODE 1
gesetzt ("Set wxUSE_UNICODE to 1 to compile wxWidgets in Unicode mode")
Aber das hat auch nichts gebracht, ich habe immernoch Linkerfehler. Weiß einer weiter?
Habe natürlich auch #define UNICODE und so ausprobiert
-
Hast du wxWidget auch mit UNICODE Unterstützung kompiliert?
-
Ich nehme an du hast WxWidgets mit VC++Express kompiliert.
Guck mal bei den Varianten, da gibts nicht nur Debug und Release, sondern auch Unicode Varianten
-
Ich habe alles per Batch kompiliert.
Außerdem habe ich auch Unicode eingestellt.
-
Mittlerweile funktioniert eigentlich viele mit wxWidgets doch nun habe ich ein neues Problem o.o
1>Verknüpfen...
1>MSVCRT.lib(crtexe.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "_main".Dachte ich habe alle ibs gelinkt:
wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib odbc32.lib
-
Musste von Konsolenprojekt auf Win32 Projekt umstellen...
Warum das denn?