Advertencia C4251 cuando se crea una DLL que exporta una clase que contiene un miembro ATL :: CString
Estoy convirtiendo una biblioteca estática basada en ATL en una DLL y obtengo la siguiente advertencia sobre cualquier clase exportada que use ATLCString
clase (encontrada en atlstr.h):
advertencia C4251: 'Foo :: str_': class 'ATL :: CStringT' necesita tener una interfaz dll para que la usen los clientes de la clase 'Foo'
Estoy declarando correctamente elFoo
clase exportada a través de__declspec(dllexport)
. ¿Es esta una advertencia que puedo ignorar de forma segura o estoy haciendo algo mal? La configuración del proyecto DLL está configurada para vincularse dinámicamente con ATL, pero esto no parece hacer ninguna diferencia.
Por ejemplo:
#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 los clientes de esta DLL también utilizarán ATL.