C++ enables different entities (e.g., functions) named with the same identifier to belong to different namespaces. To uniquely resolve names, the compiler uses name mangling, that is, it encodes additional information in the name of the involved entities. This is the reason why nvlink
is referring to this "obscure" entity _ZN6ShaderD1Ev
. In order to restore a more understandable name, a demangling operation is necessary.
Although demangling software exist, I'm often using an online demangler
Using this page, you can discover that
_ZN6ShaderD1Ev
actually means
Shader::~Shader()
which, in turn, suggests that you are not defining the destructor for the Shader()
class.