このテンプレート スマート ポインター クラスは dll にあります。
sp.h
---------
#ifdef VLIB_EXPORTS
#define VLIB_API __declspec(dllexport)
#else
#define VLIB_API __declspec(dllimport)
#endif
template < typename T > class VLIB_API SP
{
protected:
T* m_pData;
long* m_pRefCounter;
public:
SP(void);
{
m_pData = NULL;
m_pRefCounter = NULL;
}
...
...
};
ImagePtr.h
---------------
class VLIB_API CVImagePtr
{
....
}
MainLib.h
-------------
#include sp.h
#include ImagePtr.h
typedef SP<CVBlob> CVBlobPtr;
class VLIB_API CVLib
{
public:
virtual CVBlobPtr CreateBlob() = 0;
virtual CVImagePtr CreateImg() = 0;
};
このクラスを別のプロジェクト (CVMLib) で使用しようとすると、コンパイラは次のように警告します: error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall SP::~SP(void)"
CVImagePtr では問題ありません。
class VMLIB_API CVMLib : public CVLib
{
public:
virtual CVBlobPtr CreateBlob();
virtual CVImagePtr CreateImg();
};
クラスがテンプレートの場合に問題があるようです。その場合、テンプレート クラスをエクスポートするにはどうすればよいですか?
誰かがこれを解決するのを手伝ってくれますか? ありがとうございました!