This is not a unicode issue. The comment is correct: you are linking to a debug library, but you don't have DEBUG defined in your module.
There are two cases where the assert fires: where both are non-null, and and when both are null. Both non-null would indicate some unicode mixup, but this method is only ever called from within an #ifdef UNICODE with one of the params 0.
The object name parameter is normally passed to CBaseObject with the NAME() macro. This macro evalutes to NULL in release builds, and to the object name string in debug builds. CBaseObject will call the register function in debug builds.
Your constructor is compiling wxdebug.h with DEBUG not defined (so NAME() evaluates to NULL). But you are linking to a base class library which was built with DEBUG defined.
G