Я преобразую статическую библиотеку на основе ATL в DLL и получаю следующее предупреждение для всех экспортируемых классов, использующих класс ATL CString
(находится в atlstr.h):
предупреждение C4251: 'Foo :: str_': class
'АТЛ :: CStringT'
должен иметь dll-интерфейс для использования
клиентами класса 'Foo'
Я правильно объявляю класс Foo
как экспортированный через __declspec(dllexport)
. Это предупреждение, которое я могу игнорировать, или я делаю что-то не так? Настройки проекта DLL настроены для динамической связи с ATL, но, похоже, это не имеет значения.
Например:
#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
};
Все клиенты этой DLL также будут использовать ATL.