Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » STL Export aus DLL

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.07.2010, 11:39 Uhr
FreiherrEintritt



Noch eine DLL-Frage:

Ich möchte eine Klasse aus einer DLL exportieren, die als Member-Variable einen vector<wstring> enthält. Leut MSDN muss ich dazu ja die die Vector-Klassen-Instanz für wstring erzeugen, damit beim exportieren alle Einzelteile geladen sind.
Es klappt aber nicht so wie ich will, außerdem versteh ich das Compilter-Verhalten nicht ganz.

Ein Beispiel:

C++:
// DLLklasse.h
class __declspec(dllexport) EineKlasse
{
    //....
    vector<wstring> getVector();    // vector nur als Rückgabe-Typ
};



Wenn ich das mit (dllimport) in einem anderen Projekt einbinde, muss ich überhaupt nichts ändern, keine Instanzierung vornehmen usw. Weder meckert der Compiler, noch funktioniert das Programm nicht.

Aber:

C++:
// DLLklasse.h
class __declspec(dllexport) EineKlasse
{
    //....
    public:
      vector<wstring> getVector();    // vector nur als Rückgabe-Typ

    private:
      vector<wstring> m_MemberVector;    // vector auch als Member
};



führt erstens zu einer Compiler-Warnung

Code:
warning C4251: 'EineKlasse::m_MemberVector': class 'std::vector<_Ty>' erfordert eine DLL-Schnittstelle, die von Clients von class 'EineKlasse' verwendet wird


und zweitens zum Programm-Absturz...

Warum erfordert Bsp. 2 eine Instanzierung und Bsp.1 nicht?


Wenn ich vor der Klassen-Definition eine Instanzierung vornehme:

C++:
template class __declspec(dllexport) vector<wstring>;


verschiebt sich das Problem in die vector-Vererbungs-Hierarchie und es kommt die Meldung:

Code:
warning C4251: 'std::_Vector_val<_Ty,_Alloc>::_Alval': class 'std::allocator<_Ty>' erfordert eine DLL-Schnittstelle, die von Clients von class 'std::_Vector_val<_Ty,_Alloc>' verwendet wird



Ich hab etwas rumprobiert, aber ich komm nicht drauf, welche Klassen-Templates ich noch instanzieren muss

Dieser Post wurde am 01.07.2010 um 11:39 Uhr von FreiherrEintritt editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: