在有些情况需要导出模板类的实例化,否则会产生类似以下的Warning
warning C4251: “XXX”: class“std::map<_Kty,_Ty>”需要有 dll 接口由 class“XXX”的客户端使用
warning C4251: “XXX”: class“std::vector<_Kty,_Ty>”需要有 dll 接口由 class“XXX”的客户端使用
以导出std::map<int, int>类型为例
template class __declspec(dllexport) std::allocator<std::pair<const int, int> >;
template class __declspec(dllexport) std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >;
class __declspec(dllexport) MyClass
{
MyClass(){}
~MyClass(){}
void appendElement(int key, int val)
{
m_map.insert(std::pair<int, int>(key, val));
}
private:
std::map<int, int> m_map;
};