Linkprobleme bei wxPack
-
Hi Leuts,
ich habe hier ein Projekt mit MS VS 2008 express zusammen mit wxWdigets 2.8.10 erstellt. Klappte zunächst auch alles prima.
Dann wollte ich das wxPlotCtrl vom wxFormbuilder benutzen und hatte verschiedene Problemchen beim kompilieren. Bei Recherchen zu dem Thema im Net wurde fast überall empfohlen, statt wxWidgets das wxPack zu installieren, weil dies mit der statischen Bibliothek statt mit der DLL gelink werde.
Gesagt getan: Also wxWWidgets, wxFormbuilder und wxAdditions deinstalliert und das wxPack neu installiert.
Nun habe ich Link-Probleme mit dem alten Projekt:
Der Linker findet verschiedene wxString-Funktionen nicht mehr:
1>Main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall wxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ)" in Funktion ""public: void __thiscall
Auch wxAppConsole::OnAssert ,.... sind nicht mehr da
In welcher Bibliothek stecken denn die ? Wo liegen die Unterschieden zwischen wxWidgets und wxPack ?
-
Um wxPlotCtrl zu benutzen, musst du den Linker Befehl anpassen.
Dieser müsste irgendwo die Ausgabe von "wx-config --libs" einbinden. Das musst du nach "wx-config --libs base, core, plot" ändern.
Was das Problem mit wxPack ist, kann ich dir allerdings nicht sagen.MfG
Yoschi
-
Was ist denn wxConfig ?
-
wx-config Ist ein Programm, das die kompilerflags ausgibt, um wxWidgets zu kompilieren.
wxConfig ist eine Klasse um in der Registery, .ini Files, etc... einstellungen zu speichern
-
mein XP (SP3) komplett neu aufgesetzt und wxPack installiert. Beim Linken kommen immer noch folgende Fehler, kann mir keiner sagen welche Bibliothek da fehlt oder so ?
1>wxSerialize.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)".
1>Duration.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)".
1>Global.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)".
1>ILoggerMainFrame.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int const wxEVT_COMMAND_CHECKBOX_CLICKED" (?wxEVT_COMMAND_CHECKBOX_CLICKED@@3HB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int const wxEVT_COMMAND_TEXT_UPDATED" (?wxEVT_COMMAND_TEXT_UPDATED@@3HB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int const wxEVT_COMMAND_SPINCTRL_UPDATED" (?wxEVT_COMMAND_SPINCTRL_UPDATED@@3HB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int const wxEVT_COMMAND_CHOICE_SELECTED" (?wxEVT_COMMAND_CHOICE_SELECTED@@3HB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int const wxEVT_COMMAND_BUTTON_CLICKED" (?wxEVT_COMMAND_BUTTON_CLICKED@@3HB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxStatusLineNameStr" (?wxStatusLineNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxCheckBoxNameStr" (?wxCheckBoxNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxChoiceNameStr" (?wxChoiceNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxStaticBoxNameStr" (?wxStaticBoxNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxButtonNameStr" (?wxButtonNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxListCtrlNameStr" (?wxListCtrlNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxStaticTextNameStr" (?wxStaticTextNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""class wxValidator const wxDefaultValidator" (?wxDefaultValidator@@3VwxValidator@@B)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxTextCtrlNameStr" (?wxTextCtrlNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxPanelNameStr" (?wxPanelNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""class wxPoint const wxDefaultPosition" (?wxDefaultPosition@@3VwxPoint@@B)".
1>ILoggerMainFrame.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""class wxPoint const wxDefaultPosition" (?wxDefaultPosition@@3VwxPoint@@B)" in Funktion ""wchar_t const * __cdecl wxGetTranslation(wchar_t const *,wchar_t const )" (?wxGetTranslation@@YAPB_WPB_W0@Z)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxNotebookNameStr" (?wxNotebookNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""class wxSize const wxDefaultSize" (?wxDefaultSize@@3VwxSize@@B)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""wchar_t const * const wxFrameNameStr" (?wxFrameNameStr@@3QB_WB)".
1>ILoggerFB.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: static unsigned int const wxStringBase::npos" (?npos@wxStringBase@@2IB)".
1>ILoggerMainFrame.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static unsigned int const wxStringBase::npos" (?npos@wxStringBase@@2IB)" in Funktion ""public: virtual bool __thiscall wxWindow::HasToolTips(void)const " (?HasToolTips@wxWindow@@UBE_NXZ)".
1>wxSerialize.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: static unsigned int const wxStringBase::npos" (?npos@wxStringBase@@2IB)".
1>ILoggerMainFrame.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""protected: static struct wxEventTable const wxFrame::sm_eventTable" (?sm_eventTable@wxFrame@@1UwxEventTable@@B)".
1>ILoggerMainFrame.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static int wxWindowBase::ms_lastControlId" (?ms_lastControlId@wxWindowBase@@0HA)".
1>ILoggerMainFrame.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int const wxEVT_NULL" (?wxEVT_NULL@@3HB)".
1>ILoggerMainFrame.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""int const wxEVT_TIMER" (?wxEVT_TIMER@@3HB)".
1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""protected: static class wxAppConsole * wxAppConsole::ms_appInstance" (?ms_appInstance@wxAppConsole@@1PAV1@A)".
1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""protected: static class wxAppConsole * (__cdecl wxAppConsole::ms_appInitFn)(void)" (?ms_appInitFn@wxAppConsole@@1P6APAV1@XZA)".
1>wxSerialize.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_ConvertFromIeeeExtended" in Funktion ""private: double __thiscall wxSerialize::LoadDouble(void)" (?LoadDouble@wxSerialize@@AAENXZ)".
1>wxSerialize.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_ConvertToIeeeExtended" in Funktion ""public: bool __thiscall wxSerialize::WriteDouble(double)" (?WriteDouble@wxSerialize@@QAE_NN@Z)".
1>D:\Sourcen\ILogger\Debug\ILogger.exe : fatal error LNK1120: 29 nicht aufgelöste externe Verweise.
-
Anyway, jetzt habe ich das Ganze zumindest soweit, dass er fehlerfrei compiliert und kinkt. Aber wenn ich das Programm (Debug-Version) dann starten will, bringt er den Fehler: Die Anwendung konnte nicht gestartet werden, weil wxbase28ud_vc.dll nicht gefunden wurde.
Nun ist die Bibliothek aber im entsprechenden Linkerverzeichnis. Ein Kopieren in des Windows-Verzeichnis würde vielleicht helfen, aber ich habe die Codegenerierung auf Multithreaded-Debug stehen, nicht auf Multithreaded-Debug-Dll!
Nachdem ich auf DLL umgestellt habe, ist das Problem aber genauso da!
Mit den Original wxWidgets ging das alles problemlos, aber damit hatte ich ja andere Probleme beim wxPlotCtrl.