创建DLL时遇到两个有关问题~ 静态数据成员string与向量vector的警告

创建DLL时遇到两个问题~ 静态数据成员string与向量vector的警告。
C/C++ code
//class __declspec(dllexport) std::string defaultIp;

//template typename __declspec(dllexport) std::string;

class _declspec(dllexport) ClientSocket: public BaseSocket
{
private:
    DataManage * dataManage;
    bool hasConnect;

    void init(DataManage*);

public:
    static std::string defaultIp;
...
};


提示:
1> dllmain.cpp
1>g:\temp\iocp_tcp_socket_encapsulation\v02_iocp_tcp_socket_encapsulation\encapsulation\encapsulation\clientsocket.h(33): warning C4251: “ClientSocket::defaultIp”: class“std::basic_string<_Elem,_Traits,_Ax>”需要有 dll 接口由 class“ClientSocket”的客户端使用
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]


C/C++ code

template class __declspec(dllexport) std::vector <BaseSocket>;

class _declspec(dllexport) IocpServerSocket: public ServerSocket
{
private:
    HANDLE completionPort;                        // 完成端口的句柄
    std::vector <BaseSocket> * clientGroup;        // 创建客户端组
...
}


提示:
1> g:\temp\iocp_tcp_socket_encapsulation\v02_iocp_tcp_socket_encapsulation\encapsulation\encapsulation\iocpserversocket.h(26): 参见对正在编译的类 模板 实例化“std::vector<_Ty>”的引用
1> with
1> [
1> _Ty=BaseSocket
1> ]
1> ClientSocket.cpp
1>g:\temp\iocp_tcp_socket_encapsulation\v02_iocp_tcp_socket_encapsulation\encapsulation\encapsulation\clientsocket.h(33): warning C4251: “ClientSocket::defaultIp”: class“std::basic_string<_Elem,_Traits,_Ax>”需要有 dll 接口由 class“ClientSocket”的客户端使用
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]


按照网上所说的方法加上 template class __declspec(dllexport) std::vector <BaseSocket>; 还是不起作用~


这问题该怎么解决呢?

PS: 这天可能断网,只能用手机上网,可能周一才能结帖~ 不过会用手机留意信息~

------解决方案--------------------
类的静态成员变量,要在类外(cpp中)单独导出。
顺便在dll和客户端交互的部分,不推荐用stl。
------解决方案--------------------
不要把模板库导出,寻找其它替代方式,比如用成员函数代替stl的数据成员,把模板类型都隐藏起来。导出成员函数的类型和参数都不要用模板类。理由解释过无数遍:因为模板是编译期多态的,在不同模块中可能是完全不同内存布局的类型,虽然冠以相同的名称。
------解决方案--------------------
不要去导出vector,你可以导出一组接口,作为插入、查询以及导出功能。