在DLL编程中调用模版类时出现的类似"class“XXX”需要有 dll 接口由 class“XXX”的客户端使用"的warning的解决方案

在DLL编程中, 如果调用模版类, 则可能出现类似以下的错误(以CString的使用为例):

  1. warning C4251: “CLogFile::m_strFileName”:  class “ATL::CStringT <BaseType,StringTraits>”需要有 dll 接口由  class “CLogFile”的客户端使用  
warning C4251: “CLogFile::m_strFileName”: class“ATL::CStringT <BaseType,StringTraits>”需要有 dll 接口由 class“CLogFile”的客户端使用  

解决方法如下:

在调用该模板类之前, 先加入以下声明, 将模版类导出(export):

  1. template   class   __declspec ( dllexport ) CStringT< char >;  
template class __declspec(dllexport) CStringT<char>;  

如此, 则可消除该warning.

参考: http://topic.csdn.net/u/20090321/09/bc66fb7d-14f1-4b57-b6a0-5d3c86907cb2.html

你可能感兴趣的:(编程,c,Class,dll)