Wenn Sie versuchen, Klassen, die std::-Objekte enthalten, wie z. B. Vektoren oder Zeichenfolgen, aus einer DLL zu exportieren, müssen Sie Möglicherweise werden Warnungen angezeigt, dass eine DLL-Schnittstelle erforderlich ist. Diese Warnung wird ausgelöst, wenn der Compiler erkennt, dass Mitglieder komplexer Typen innerhalb der Klasse nicht explizit für den DLL-Export markiert sind.
Die Weiterleitungsdeklaration der Mitgliedstypen mit DLL_EXPORT kann das Problem teilweise beheben. Um jedoch einen ordnungsgemäßen Export von Mitgliedsfunktionen sicherzustellen, müssen die entsprechenden Klassen in ihrer Kompilierungseinheit auch als DLL_EXPORT gekennzeichnet sein.
Diese Anforderung ergibt sich aus der Tatsache, dass der Compiler nicht bestimmen kann, welche Methoden der Klasse von Clients verwendet werden der DLL_EXPORTed-Klasse. Daher wird erzwungen, dass alle zugänglichen Methoden exportiert werden müssen. In diesem Zusammenhang wird nicht empfohlen, die Warnung zu ignorieren und zu deaktivieren.
Um die Warnung für nicht DLL-exportierbare Mitglieder zu beheben, können die folgenden Ansätze in Betracht gezogen werden:
In der Beispiel bereitgestellt: Forward-Deklaration der Vorlagenspezialisierung std::allocator
Das obige ist der detaillierte Inhalt vonWie exportieren Sie Klassen, die std::-Objekte enthalten, aus einer DLL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!