Aviso C4251 ao criar uma DLL que exporta uma classe que contém um membro ATL :: CString
Estou convertendo uma biblioteca estática baseada em ATL em uma DLL e estou recebendo o seguinte aviso em todas as classes exportadas que usam o ATLCString
classe (encontrada em atlstr.h):
aviso C4251: 'Foo :: str_': class 'ATL :: CStringT' precisa ter a interface dll a ser usada pelos clientes da classe 'Foo'
Estou declarando corretamente oFoo
classe exportada via__declspec(dllexport)
. É um aviso que posso ignorar com segurança ou estou fazendo algo errado? As configurações do projeto DLL são definidas para vincular dinamicamente ao ATL, mas isso não parece fazer nenhuma diferença.
Por exemplo:
#ifdef DLLTEST_EXPORTS
#define DLLTEST_API __declspec(dllexport)
#else
#define DLLTEST_API __declspec(dllimport)
#endif
// This class is exported from the DLLTest.dll
class DLLTEST_API Foo
{
public:
Foo();
CString str_; // WARNING C4251 HERE
};
Todos os clientes desta DLL também usarão ATL.