Problem beim Erstellen von C++ Strukturen in C#

dila71

Mitglied
Hallo,

da ich ja zwar C++-DLLs importieren kann um deren Funktionen zu nutzen, nicht aber die Header mit den Typdefinitionen bin ich dabei C++ Strukturen in C# umzusetzen.

Nun mein Problem... ARRAYS.

Eindimensionale Arrays habe ich ja schon folgendermaßen umgesetzt:

Code:
SHORT nFondsFin[4];
zu
[MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VT_I2)]
public short[] name;
name = new short[4];

DOUBLE name[4]; 
zu
[MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VT_R8)]
public double[] name;
name = new double[4];

und 
CHAR name[4];    
zu
MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string name;

Kann da mal jemand der das evtl schon öfter gemacht hat schauen, ob das so passt?
Und kann ich den String irgendwie auf 4 Elemente begrenzen?

Was mein akutes Problem ist das folgende:

Code:
DOUBLE name[7][10];

Wie marshall ich das? Irgendwie blicke ich durch die ganzen Anleitungen nicht durch.

Evtl so?

Code:
[MarshalAs(UnmanagedType.LPArray, SizeConst=70)]
public double[] name;
name = new double[7][10];

Ist das so doch schon richtig, oder habe ich es wirklich nicht verstanden?


Vielen Dank für Eure Hilfe

Dirk
 
sollte glaube so sein:
Code:
double[,] name = new double[7, 10];


Und kann ich den String irgendwie auf 4 Elemente begrenzen?
Du könntest zumindest bei StringBuilder eine Capazität von 4 angeben, ob dir das hilft ka.


Code:
DOUBLE name[4]; 
zu
[MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VT_R8)]
public double[] name;
name = new double[4];
DOUBLE muss glaube nach float

Code:
und 
CHAR name[4];    
zu
MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string name;
ev, hier auch char Array :confused:
Code:
char[] name = new char[4];

Ob die Attribute stimmen kann ich dir leider nicht sagen.
 

Neue Beiträge

Zurück