Consider the following:
In X.h:
class X { X(); virtual ~X(); };
X.cpp:
#inclu
You need to give a body to the virtual destructor:
class X { X(); virtual ~X() {} };