unmanaged Daten für CLI vorbereiten



  • Hallo, ich habe ein Projekt in dem Datenstrukturen verwendet werden, welche ich gern in eine XML Datei schreiben möchte (Serialisieren/Deserialisieren). Nun habe ich das Problem das diese Daten als "normale" C++ Strukturen vorliegen und ich diese irgendwie in C++/CLI Objekte überführen muss. Ich glaube das richtige Stichwort ist Marshalling. Kann mir dazu jemand einen Hinweis geben? Folgendes Beispiel soll das Problem einmal verdeutlichen.

    #using <System.Dll>
    #using <System.XML.Dll>

    using namespace System;
    using namespace System::Xml;
    using namespace System::Xml::Serialization;

    // C++
    struct myStruct1
    {
    CString str;
    int *ptr;
    };

    struct myStruct2
    {
    int var1;
    int var2;
    myStruct1 var3;
    };

    // C++/CLI
    void xmlsave(Object^ obj)
    {
    XmlSerializer^ x = gcnew XmlSerializer(obj->GetType());
    TextWriter^ w = gcnew StreamWriter("myfile.xml");
    x->Serialize(w, obj);
    w->Close();
    }

    void main(void)
    {
    Object^ objData = gcnew Object;
    myStruct2 stData;
    ...
    objData = convert(stData); // dieser Teil ist mir unklar
    ...
    xmlsave(objData);
    }



  • Warum willst Du C++/CLI verwenden um eine Datenstruktur in XML zu speichern? Das kannst Du auch mit msxml machen...
    Oder was bewegt Dich dazu dies mit .NET zu machen?



  • msxml kannte ich nicht, ich werde mir es mal anschauen. Wobei ich gerade versuche die Daten mit boost abzuspeichern.


Log in to reply