Ostrzeżenie C4251 podczas budowania biblioteki DLL, która eksportuje klasę zawierającą element ATL :: CString

Konwertuję bibliotekę statyczną opartą na ATL na bibliotekę DLL i otrzymuję następujące ostrzeżenie na wszystkich wyeksportowanych klasach, które używają ATLCString klasa (znaleziona w atlstr.h):

ostrzeżenie C4251: „Foo :: str_”: klasa „ATL :: CStringT” musi mieć interfejs dll do użycia przez klientów klasy „Foo”

Prawidłowo deklarujęFoo klasa eksportowana przez__declspec(dllexport). Czy to ostrzeżenie, które mogę bezpiecznie zignorować, czy robię coś złego? Ustawienia projektu DLL są ustawione tak, aby dynamicznie łączyć się z ATL, ale to nie wydaje się mieć znaczenia.

Na przykład:

#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
};

Wszyscy klienci tej biblioteki DLL będą również używać ATL.

questionAnswers(4)

yourAnswerToTheQuestion