[gelöst] wxDebugContextDelayCounter Linker error
-
Hallo,
ich bin in meiner wxWidgets-Anwendung auf der Suche nach einem Memory-Leak. Ich habe bei wxWidgets die Debug-Funktionen entdeckt und festgestellt, dass ich mein wx neu compelieren muss mit dem Flag "wxUSE_DEBUG_CONTEXT 1". Das habe ich gemacht und nun bekomme ich leider beim Releas immer die folgenden Meldungen:
channeldlg.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: static int wxDebugContextDumpDelayCounter::sm_count" (?sm_count@wxDebugContextDumpDelayCounter@@0HA)" in Funktion ""public: __thiscall wxDebugContextDumpDelayCounter::wxDebugContextDumpDelayCounter(void)" (??0wxDebugContextDumpDelayCounter@@QAE@XZ)". mainframe.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static int wxDebugContextDumpDelayCounter::sm_count" (?sm_count@wxDebugContextDumpDelayCounter@@0HA)". musiker.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static int wxDebugContextDumpDelayCounter::sm_count" (?sm_count@wxDebugContextDumpDelayCounter@@0HA)". musiker_schlagzeuger.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static int wxDebugContextDumpDelayCounter::sm_count" (?sm_count@wxDebugContextDumpDelayCounter@@0HA)". myband2.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: void __thiscall wxDebugContextDumpDelayCounter::DoDump(void)" (?DoDump@wxDebugContextDumpDelayCounter@@AAEXXZ)". player.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: void __thiscall wxDebugContextDumpDelayCounter::DoDump(void)" (?DoDump@wxDebugContextDumpDelayCounter@@AAEXXZ)". channeldlg.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: void __thiscall wxDebugContextDumpDelayCounter::DoDump(void)" (?DoDump@wxDebugContextDumpDelayCounter@@AAEXXZ)" in Funktion ""public: __thiscall wxDebugContextDumpDelayCounter::~wxDebugContextDumpDelayCounter(void)" (??1wxDebugContextDumpDelayCounter@@QAE@XZ)". mainframe.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: void __thiscall wxDebugContextDumpDelayCounter::DoDump(void)" (?DoDump@wxDebugContextDumpDelayCounter@@AAEXXZ)". musiker.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: void __thiscall wxDebugContextDumpDelayCounter::DoDump(void)" (?DoDump@wxDebugContextDumpDelayCounter@@AAEXXZ)". musiker_schlagzeuger.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: void __thiscall wxDebugContextDumpDelayCounter::DoDump(void)" (?DoDump@wxDebugContextDumpDelayCounter@@AAEXXZ)". myband2.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.
Wenn ich im Debug ausführe, dann bekomme ich keine Fehlermeldungen. Ich habe die Funktionen für das ganze Debugging auch immer in
#ifdef __WXDEBUG__ #if wxUSE_DEBUG_CONTEXT //... #endif #endif
gesetzt und genau darauf geachtet, dass beim Releas keine Definitionen wie _DEBUG oder __WXDEBUG__ gesetzt sind. Trotzdem greift er irgendwie auf dieses "wxDebugContextDumpDelayCounter::DoDump" zu, obwohl das laut Doku von wx nicht der Fall sein dürfte.
Wie gewöhne ich wxWidgets im Releas-Modus die Debug-Funktionen ab?
Ich nutze Visual Studio 2008 Pro und wxWidgets 2.8.10 (unicode, kein DLL) unter Windows.Zu Hilfe...
Stefan
-
wxWidgets 2.8.10 folgt gebastelt:
#define wxUSE_DEBUG_CONTEXT 1 #define wxUSE_MEMORY_TRACING 1 #define wxUSE_GLOBAL_MEMORY_OPERATORS 0 #define wxUSE_DEBUG_NEW_ALWAYS 0 #define wxUSE_ON_FATAL_EXCEPTION 1 #define wxUSE_STACKWALKER 1 #define wxUSE_DEBUGREPORT 1
-
Not using Precompiled Headers
Und schon gehts!