New compiled Modules

just a guess
try to put the an empty “step()” method
is declared but not implemented

3 Likes

Thanks a lot Sig. Tuzzi.

It works!!! An empty step() method was missed. You saved my Day.

1 Like

For anyone following up on this later…

__ZTV8Resistor is what’s called a ‘mangled name’. Because c++ has overloading, the linker can’t just rely on the name of a function to figure out what connects to what. Instead the functions and other symbols are referred to by a name which includes extra stuff to describe more about them, in order to make them unique and identifiable.

In this case __ZTV8Resistor means the _vtable for the Resistor class. This was missing because the declaration of Resistor said that it had a step function, but there was no actual compiled implementation for it.

There are online demanglers that you can use to turn a mangled name into a more recognizable description of the missing object.

7 Likes

Thanks for a very clear explanation David.

you can also use c++filt if you have it installed (if you’re building on a Mac, you do, or if you happen to have clang installed)

$ c++filt __ZTV8Resistor
vtable for Resistor

but that only gets you as far as knowing what you’re missing :slight_smile:

1 Like

Good to know… Thank You Jerry