Estoy convirtiendo una biblioteca estática basada en ATL en una DLL y obtengo la siguiente advertencia en cualquier clase exportada que use la clase ATL CString
(encontrado en atlstr.h):Advertencia C4251 al compilar una DLL que exporta una clase que contiene un miembro ATL :: CString
advertencia C4251: 'Foo :: str_': clase 'ATL :: CStringT' necesita tener DLL-Adaptador para su uso por los clientes de clase 'Foo'
Estoy declarando correctamente la clase Foo
como e xported vía __declspec(dllexport)
. ¿Es esta una advertencia que puedo ignorar sin problemas o estoy haciendo algo mal? La configuración del proyecto DLL está configurada para vincular 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 estarán usando ATL.
Si usted es capaz de garantizar tanto la biblioteca y el cliente está construido en la misma versión de la biblioteca ATL, lo que puede ignorarlo. –