STL vector und DLL
-
Hi,
ich schreibe gerade an einer DLL und bekomme immer die Warnung "warning C4251", da der verwendete STL vector nicht mit einem __declspec(dllexport) versehen ist.Wie kann ich diese Meldung beseitigen?
Mein Ansatz wäre, ich kopiere mir die STL Dateien in mein Projektverzeichniss und füge dann das __declspec(dllexport) per Hand ein.
Oder gibt es eine bessere Lösung?
-
Jede einzelne Methode exportieren und nicht die ganze Klasse.
-
Gibts auch ein kleines Beispiel zu?
-
Falls die Warnung nicht wichtig ist, mach doch ein #pragma warning

Das mach ich immer mit dieser "...länger als 256 Zeichen..." Warnung.
-
@estartu_de
Was soll das bringen?
Die Warnungen ausschalten und so tun als ob es sie nicht gebe ist keine Lösung.
Durch soetwas kommen nur Fehler ins Programm und irgendwann kann man die dann nichtmehr beseitigen.Stell mal VC6 auf Warnstufe 4 und kompiliere mal ein Programm, es ist erschreckend, wieviele Warnungen da aus den Bibliotheken kommen.
-
Die Warnung die ich meine war irgendwie nicht wegzukriegen und tauchte beim einfachen Includen eines STL-Headers auf. Für die Fehlerfreiheit der STL bin ich nicht zuständig - also ignoriere ich diese Warnungen.
-
Hi, ich bin immer noch nicht weiter gekommen.

Also gebe ich hier mal ein Beispiel, wo ich das Problem habe:
#ifdef MY_EXPORTS #define MY_API __declspec(dllexport) #else #define MY_API __declspec(dllimport) #endif #include <vector> class MY_API foo { private: vector<int> vect; //hier kommt die Warnung ... public: bool zeige(); bool ins(); bool del(); };Beim kompiliren erhalte ich dann folgende Warnung:
: warning C4251: 'vect' : class 'std::vector<int,class std::allocator<int> >' benoetigt eine DLL-Schnittstelle, die von Clients von class 'foo' verwendet wirdIch komm da einfach nicht weiter und brauche konstruktive Vorschläge.
DANKE