[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!


Anmelden zum Antworten