COM-DLL - Mehere Ergebnisse an aufrufendes Programm übergeben



  • Hallo,
    ich bin ein Neuling in C++ und versuche mich gerade in der Erstellung einer COM-DLL.
    Die DLL erstelle ich mit C++.net und rufe diese mit VB.net auf.
    Rechnen und das Ergebnis mit Return zurück geben, Dateien erzeugen usw. kann die DLL schon. (Oh Wunder)

    Nun soll die DLL auch Dinge erledigen, die mehrere Ergebnisse zur Folge haben.
    Dafür ist Return wohl nicht geeignet. Kann ich die Parameter der Funktion auch dazu nutzen Ergebnisse an das aufrufende Programm zu übergeben?

    Auch mit Übergabe von Strings habe ich so meine Probleme.
    Meine Idee ist in VB.net keinen String, sondern ein Char-Array zu übergeben.
    Geht aber nicht, da char in .net aus 2 Byte besteht und C++ Char nur mit einem Byte macht.

    Habe schon unendlich viel Zeit mit Googeln verbracht, aber vermutlich sehe ich den Wald vor ...

    Danke für eure Unterstützung !



  • Du kannst mithilfe von Referenzen und Zeigern mehrere Werte "zurückgeben".
    Vorausgesetzt, VB kennt so etwas überhaupt.



  • Tester_01 schrieb:

    Auch mit Übergabe von Strings habe ich so meine Probleme.
    Meine Idee ist in VB.net keinen String, sondern ein Char-Array zu übergeben.
    Geht aber nicht, da char in .net aus 2 Byte besteht und C++ Char nur mit einem Byte macht.

    Es gibt in C++ den Typen wchar_t, welcher aus 2 Bytes besteht. Diesen kannst du dann als Konstruktorargument einem std::wstring übergeben. Aber achte darauf, dass das letzte Zeichen zwei 0-bytes sein müssen.



  • @Janjan:
    Da es hier vermutlich um Windows geht stimmt das wchar_t = 2 Byte vermutlich.
    Ist aber nicht überall so. Auf Linux ist z.B. üblich dass wchar_t 4 Byte gross ist.


Anmelden zum Antworten