Я конвертирую статическую библиотеку на основе 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.