Warnung C4251 beim Erstellen einer DLL, die eine Klasse exportiert, die einen ATL :: CString-Member enthält

Ich konvertiere eine ATL-basierte statische Bibliothek in eine DLL und erhalte die folgende Warnung für alle exportierten Klassen, die die ATL verwendenCString Klasse (gefunden in atlstr.h):

Warnung C4251: 'Foo :: str_': Klasse 'ATL :: CStringT' muss über eine DLL-Schnittstelle verfügen, um von Clients der Klasse 'Foo' verwendet zu werden

Ich erkläre das richtigFoo Klasse als exportiert über__declspec(dllexport). Ist das eine Warnung, die ich ignorieren kann oder mache ich etwas falsch? Die DLL-Projekteinstellungen sind so eingestellt, dass sie dynamisch mit ATL verknüpft sind, dies scheint jedoch keinen Unterschied zu machen.

Zum Beispiel:

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

Alle Clients dieser DLL verwenden ebenfalls ATL.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage