The base class of all classes (ManagedObject) does not have a destructor. Named object has a virtual destructor and all destructor definitions exist in the cpp file while being declared in the .h file. I also have some blank #defines which are meant to be comments (such as inl_props). I removed commented out functions. I included all relevant classes.
From the core dll. All objects are within a specific namespace named IIMOEngine
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
class IIMOECORE_EXPORT ManagedObject
{
protected:
union {
ID_STRUCT _id_properties;
__uint64 _id;
};
protected inl_props:
inline ManagedObject(__uint32 referenceID);
protected interfaces:
virtual void init();
virtual const bool keyed() const;
virtual void finalize();
public inl_props:
inline const bool isFinalized() const { return (_id_properties._referenceID & 0x1) != 0; }
inline __uint32 referenceID() { return _id_properties._referenceID & REFERENCE_MASK; }
inline __uint32 objectID() { return _id_properties._objectID; }
inline __uint64 id() { return _id; }
public operators:
inline bool operator==(const ManagedObject& o) { return _id == o._id; }
};
/// LIBRARY INDEPENDENT ABSTRACT CLASS/INTERFACE FOR ALL NAMED OBJECTS
/// Does not take a string since string data is library specific
class IIMOECORE_EXPORT NamedObject : public ManagedObject
{
private:
__uint32 _hashValue;
protected:// inl_props:
inline NamedObject(__uint32 referenceID) : ManagedObject(referenceID) { };
inline const __uint32 hashID() const { return _hashValue; }
friend class IObjectManager;
protected overrides:
virtual void init() override;
virtual void finalize() override;
public interfaces:
virtual ~NamedObject();
virtual const __standardChar* name() const = 0;
virtual const __uint32 calculateHashValue() = 0;
};
/// Generic class for all named objects
/// Meant to be used as the base class for all library dependent named objects
template <typename LibraryStringType>
class IIMOECORE_EXPORT NamedLibraryObject : public NamedObject
{
protected:
LibraryStringType _name;
protected inl_props:
inline NamedLibraryObject(const LibraryStringType& name, __uint32 referenceID) : NamedObject(referenceID), _name(name) { }
public inl_props:
inline const LibraryStringType libraryFormattedName() const { return _name; }
public:
virtual ~NamedLibraryObject();
public interfaces:
//virtual void setLibraryFormattedName(const LibraryStringType& name);
virtual void setName(const LibraryStringType& newName) = 0;
};
#include "IObjectManager.h"
inline IIMOEngine::ManagedObject::ManagedObject(__uint32 referenceID) : _id_properties(ID_STRUCT(referenceID, IObjectManager::globalInstance()->createID(referenceID))) { }
|
From the API dll
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
// Base class for any standard Qt based Engine object
class IIMOAPI_EXPORT IIMObject : public NamedLibraryObject<QByteArray>
{
public:
inline IIMObject(const QByteArray& name, __uint32 referenceID) : NamedLibraryObject<QByteArray>(name, referenceID) { }
static const __uint32 calculateHashValue(const __standardChar* name, __uint32 referenceID);
~IIMObject();
public overrides:
virtual const __standardChar* name() const override;
virtual const __uint32 calculateHashValue() override;
virtual void setName(const QByteArray& name) override;
//virtual void setName(const QLatin1String& name)
};
|
Errors:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "__declspec(dllimport) public: class IIMOEngine::NamedLibraryObject<class QByteArray> & __thiscall
IIMOEngine::NamedLibraryObject<class QByteArray>::operator=(class IIMOEngine::NamedLibraryObject<class QByteArray> const &)" (__imp_??4?$NamedLibraryObject@VQByteArray@@@IIMOEngine@@QAEAAV01@ABV01@@Z) referenced in function "public: class IIMOEngine::IIMObject & __thiscall IIMOEngine::IIMObject::operator=(class IIMOEngine::IIMObject const &)" (??4IIMObject@IIMOEngine@@QAEAAV01@ABV01@@Z) IIMOAPI D:\Developing\Projects\IIM\METAphor\IIMOAPI\coreobjecttypes.obj 1
Error LNK2019 unresolved external symbol "__declspec(dllimport) protected: __thiscall IIMOEngine::NamedLibraryObject<class QByteArray>::NamedLibraryObject<class QByteArray>(class QByteArray const &,unsigned int)" (__imp_??0?$NamedLibraryObject@VQByteArray@@@IIMOEngine@@IAE@ABVQByteArray@@I@Z) referenced in function "public: __thiscall IIMOEngine::IIMObject::IIMObject(class QByteArray const &,unsigned int)" (??0IIMObject@IIMOEngine@@QAE@ABVQByteArray@@I@Z) IIMOAPI D:\Developing\Projects\IIM\METAphor\IIMOAPI\coreobjecttypes.obj 1
Error LNK2019 unresolved external symbol "__declspec(dllimport) public: virtual __thiscall IIMOEngine::NamedLibraryObject<class QByteArray>::~NamedLibraryObject<class QByteArray>(void)" (__imp_??1?$NamedLibraryObject@VQByteArray@@@IIMOEngine@@UAE@XZ) referenced in function "public: virtual __thiscall IIMOEngine::IIMObject::~IIMObject(void)" (??1IIMObject@IIMOEngine@@UAE@XZ) IIMOAPI D:\Developing\Projects\IIM\METAphor\IIMOAPI\coreobjecttypes.obj 1
Error LNK2019 unresolved external symbol "__declspec(dllimport) public: __thiscall IIMOEngine::NamedLibraryObject<class QByteArray>::NamedLibraryObject<class QByteArray>(class IIMOEngine::NamedLibraryObject<class QByteArray> const &)" (__imp_??0?$NamedLibraryObject@VQByteArray@@@IIMOEngine@@QAE@ABV01@@Z) referenced in function "public: __thiscall IIMOEngine::IIMObject::IIMObject(class IIMOEngine::IIMObject const &)" (??0IIMObject@IIMOEngine@@QAE@ABV01@@Z) IIMOAPI D:\Developing\Projects\IIM\METAphor\IIMOAPI\coreobjecttypes.obj 1