Hi again Richard!
I encountered another instance of this linker error and I have found out how to debug such situations.
First of all, you must know that the gibberish "symbol" is actually a mangled name. This
mangling is done by the c++ compiler to support polymorphism. The compiler converts the names of all functions, variables and definitions into unique mangled identifiers (this is how it and the linker can differentiate functions with same name, different arguments, etc).
Assuming you are on a linux system,you can use
c++filt do de-mangle the name. On the other hand
nm will list all symbols specified in an object file (and also lists whether the symbol is defined in this object file or elsewhere).
$$ c++filt _ZTV13ExampleEditor
will return
vtable for ExampleEditorTo use
nm, on the CLI just give the object file name as an argument like this,
$$ nm ExampleEditor.oThat means the compiler was unable to fill the virtual table for ExampleEditor. If you invoke
nm <path-to>/ExampleEditor.o, you will see that the constructor is well defined (sorry for misleading you in the last reply)!
You can rectify this problem by taking guidance from these SO posts:
Undefined reference to vtableundefined reference to vtable - virtual member, classes generated by gsoap
Cheers!
Ananya