Struct als Rückgabetyp von MFC DLL

MichiStroi

Erfahrenes Mitglied
Hallo,

Ich hab gerade eine merkwürdige Sache entdeckt und hab keine Lösung dafür parat.

Ich habe in C++ eine MFC DLL erstellt und importiere diese in C#.

Als Rückgabetyp verwende ich eine struktur mit 2 Integer Werten und lese diese in C# erfolgreich aus. Das funktioniert auch mit einem Integer Wert in der Struktur.

Wenn jetzt aber die Struktur aus 3 Integer Werten besteht funktioniert das ganze nicht mehr!
Code:
{
int a;
int b;
int c;
}
Als Parameter beim Aufrufen der Funktion kann ich sehr wohl größere Strukturen mitgeben, aber wenn ich diese als Rückgabetyp nehme, funktioniert es nicht.
Hat jemand eine Ahnung woran das liegt?
Danke....
Michi
 
Das ist jetzt nur ne Idee von mir, da int normalerweise alleine 32Bit belegt. Vielleicht
macht dein Compiler bei 2en halt einfach 2 x 16 Bit draus. Das ist in soweit ein Problem als das
Rückgabewerte AFAIK im CPU-Register eax zurückgegeben werden - und das fasst nur 32 Bit. Normalerweise sorgen die Compiler selbst dafür, dass das trotzdem hinhaut, vielleicht gibts aber grade da ein Portierproblem von C++ / C#.
 
Ich hab jetzt so ziemlich alles probiert was gegangen ist. Ach bei simplen byte Werten gibt er seinen Geist auf.
Aber die not macht ja erfinderisch.

Gebe jetzt nur noch einen boolschen wert zurück und schreibe meine Struktur in eine Binäre Datei, die ich dann wieder auslese. Kostet vielleicht ein paar ms aber funktioniert auch.
DIe Not macht halt erfinderisch...
lg michi
 
Moin,
also in ne Datei schreiben und wieder auslesen...das sind nicht nur ein paar ms^^
Ich code grad ne MFC DLL als COM InProc Server und das Ding muss Sprachenunabhängig sein (mehr oder weniger)
Und nach vorgabe muss ich VARIANT und BSTR DatenTypen benutzen, sind ein bisle umständlich in der Handhabung, aber dafür kann man die Dinger überall auslesen^^
Es geht darum Clients gar in nem VBA Skript für Excel zu realisieren.
Ist wie n array der jeden Datentypen aufnehmen kann, nur solltest du immer über Safearray operationen drauf zugreifen...
 
Zurück