MinGW & wxWidgets
-
Hi, ich stelle nun gerade von MSVC zu MinGW um und habe noch ein Problem mit wxWidgets. Ich habe wxWidgets bereits für MinGW kompiliert und versuche es nun auch zu nutzen.
Allerdings kriege ich eine Menge undefined references in den Libs, dabei linke ich die selben Libs wie mit Visual C++?(Natürlich das MinGW Gegenstück)
Hier mal die Ausgabe:C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxbase28d.a(baselib_filename.o): In function `ZN10wxFileName17GetShortcutTargetERK8wxStringRS0_PS0_': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/filename.cpp:1348: undefined reference to `CoCreateInstance@20' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/filename.cpp:1354: undefined reference to `IID_IPersistFile' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_window.o): In function `ZNK8wxWindow11MSWGetStyleElPm': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/window.cpp:1352: undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_window.o): In function `ZN8wxWindow11HandlePowerEjlPb': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/window.cpp:4111: undefined reference to `wxEVT_POWER_SUSPENDING' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/window.cpp:4115: undefined reference to `wxEVT_POWER_SUSPEND_CANCEL' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/window.cpp:4119: undefined reference to `wxEVT_POWER_SUSPENDED' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/window.cpp:4126: undefined reference to `wxEVT_POWER_RESUME' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_window.o): In function `ZNK7wxEvent12GetEventTypeEv': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/window.cpp:(.text$_ZN12wxPowerEventD1Ev[wxPowerEvent::~wxPowerEvent()]+0xb): undefined reference to `vtable for wxPowerEvent' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/window.cpp:(.text$_ZN12wxPowerEventC1Ei[wxPowerEvent::wxPowerEvent(int)]+0x25): undefined reference to `vtable for wxPowerEvent' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_statbox.o): In function `ZN11wxStaticBox13MSWWindowProcEjjl': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/statbox.cpp:211: undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_statbox.o): In function `ZN11wxStaticBox14wxCreateObjectEv': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/statbox.cpp:105: undefined reference to `wxSystemOptions::HasOption(wxString const&)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/statbox.cpp:105: undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_font.o): In function `ZN16wxNativeFontInfo4InitEv': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/font.cpp:431: undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_colourcmn.o): In function `ZlsR9wxVariantRK8wxColour': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/colourcmn.cpp:141: undefined reference to `wxVariant::SetData(wxVariantData*)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_colourcmn.o): In function `Z41__static_initialization_and_destruction_0ii': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/colourcmn.cpp:29: undefined reference to `wxVariantData::ms_classInfo' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_colourcmn.o): In function `ZNK19wxColourVariantData7GetTypeEv': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/colourcmn.cpp:29: undefined reference to `vtable for wxVariantData' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/colourcmn.cpp:29: undefined reference to `vtable for wxVariantData' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_wincmn.o): In function `ZN12wxWindowBaseC2Ev': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/wincmn.cpp:212: undefined reference to `wxSystemOptions::HasOption(wxString const&)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/wincmn.cpp:214: undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_wincmn.o): In function `ZN12wxWindowBaseC1Ev': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/wincmn.cpp:212: undefined reference to `wxSystemOptions::HasOption(wxString const&)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/wincmn.cpp:214: undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_tbar95.o): In function `ZN9wxToolBar7RealizeEv': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/tbar95.cpp:585: undefined reference to `wxSystemOptions::HasOption(wxString const&)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/msw/tbar95.cpp:585: undefined reference to `wxSystemOptions::GetOptionInt(wxString const&)' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_sizer.o): In function `ZN7wxSizerD2Ev': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:509: undefined reference to `wxClientDataContainer::~wxClientDataContainer()' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:509: undefined reference to `wxClientDataContainer::~wxClientDataContainer()' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_sizer.o): In function `ZN7wxSizerD1Ev': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:509: undefined reference to `wxClientDataContainer::~wxClientDataContainer()' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:509: undefined reference to `wxClientDataContainer::~wxClientDataContainer()' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_sizer.o): In function `ZN7wxSizerD0Ev': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:509: undefined reference to `wxClientDataContainer::~wxClientDataContainer()' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_sizer.o):C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:509: more undefined references to `wxClientDataContainer::~wxClientDataContainer()' follow C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_sizer.o): In function `ZN21wxwxSizerItemListNode10DeleteDataEv': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:54: undefined reference to `wxClientDataContainer::wxClientDataContainer()' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_sizer.o): In function `ZN11wxSizerItemC2Ev': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:103: undefined reference to `wxClientDataContainer::~wxClientDataContainer()' C:\Libraries\wxWidgets-2.8.7\lib\gcc_lib\libwxmsw28d_core.a(corelib_sizer.o): In function `ZN11wxSizerItem4InitERK12wxSizerFlags': C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientObject(wxClientData*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoGetClientObject() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientData(void*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:97: undefined reference to `wxClientDataContainer::DoGetClientData() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientObject(wxClientData*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoGetClientObject() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientData(void*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:97: undefined reference to `wxClientDataContainer::DoGetClientData() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientObject(wxClientData*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoGetClientObject() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientData(void*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:97: undefined reference to `wxClientDataContainer::DoGetClientData() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientObject(wxClientData*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoGetClientObject() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientData(void*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:97: undefined reference to `wxClientDataContainer::DoGetClientData() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientObject(wxClientData*)' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoGetClientObject() const' C:/Libraries/wxWidgets-2.8.7/build/msw/../../src/common/sizer.cpp:95: undefined reference to `wxClientDataContainer::DoSetClientData(void*)' Process terminated with status 1 (0 minutes, 5 seconds) 50 errors, 0 warnings
Was muss ich tun, oder linken?
-
Du brauchst i.d.R:
die msw_core, base, und evtl noch die msw_adv.
Das müsste reichen, evtl. mal mit der Reihenfolge rumspielen.
-
Linke ich alle, aber was meinst du mit Reihenfolge?
-
JustAnotherNoob schrieb:
Linke ich alle, aber was meinst du mit Reihenfolge?
Hatte schon Probleme mit dem MingW wenn ich nicht in bestimmter Reihenfolge gelinkt hab. Am besten etwas tauschen, und sehen, ob es weniger oder mehr Meldungen sind.
-
Ich selbst benutze für wxWidgets unter Windows eine etwas eigenartige Kommandozeilensyntax, die ich sselbst nicht ganz kapiere -aber sie funktioniert
Orientier Dich mal daran:
g++ -oOutput.exe File1.o File2.0 File3.0 -LC:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_dll -LC:\msys\1.0\local\lib C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxmsw28u.a C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_lib\libwxmsw28u_gl.a -lwxtiff -lwxjpeg -lwxpng -lwxzlib -loleaut32 -lole32 -luuid -lcomctl32 -lcomdlg32 -lgdi32
Wichtig ist vor Allem, dass die Windows-Bibliotheken mit angegeben werden, da die wxWidgets-Libs davon abhängig sind.