IPC-Problem C#->C++

10/01/2008 - 13:55 von Christoph | Report spam
Hallo zusammen,

ich versuche Daten aus einem C# Programm an eine C++ Programm zu senden.

Dafür habe ich in C# folgende Structur, um die Daten zu verpacken:

[StructLayout(LayoutKind.Sequential, Pack =1)]
internal struct DataPacket
{
public long wert1;
public ulong wert2;
public ulong wert3;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType =
UnmanagedType.I1, SizeConst = 8192)] public byte[] Data;
}


In C++ sieht die Struktur wie folgt aus:
typedef struct DataPacket {

LONGLONG wert1;
LONGLONG wert2;
LONGLONG wert3;
BYTE Data[8192];

}DataPacket;


Es gelingt mir innerhalb des C++ Programms den korrekten "wert1" auszulesen.

wert2 und wert3 sind jedoch beide 0 (den Inhalt des Array habe ich noch
nicht überprüft; ich wàre im Moment schon froh, wenn die Zahlen stimmen
würden)

Nun meine Frage:

Wie müsste das C# Struct aussehen, damit ich in C++ darauf zugreifen
kann (inklusive structlayout usw)?

MfG
Christoph
 

Lesen sie die antworten

#1 Kai Korla
10/01/2008 - 14:03 | Warnen spam
Hi,

eine Lösung habe ich gerade noch nicht am Start.
Aus Sauberkeitsgründen würde ich haber auf jeden Fall schonmal die Typen
korrekt abbilden. Afaik ist ulong != LONGLONG und es sollte ulong ==
ULONGLONG sein. Ich lass mir natürlich gern das Gegenteil erklàren :-)

Grüße
Kai



"Christoph" schrieb im Newsbeitrag
news:
Hallo zusammen,

ich versuche Daten aus einem C# Programm an eine C++ Programm zu senden.

Dafür habe ich in C# folgende Structur, um die Daten zu verpacken:

[StructLayout(LayoutKind.Sequential, Pack =1)]
internal struct DataPacket
{
public long wert1;
public ulong wert2;
public ulong wert3;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType =
UnmanagedType.I1, SizeConst = 8192)] public byte[] Data;
}


In C++ sieht die Struktur wie folgt aus:
typedef struct DataPacket {

LONGLONG wert1;
LONGLONG wert2;
LONGLONG wert3;
BYTE Data[8192];

}DataPacket;


Es gelingt mir innerhalb des C++ Programms den korrekten "wert1"
auszulesen.

wert2 und wert3 sind jedoch beide 0 (den Inhalt des Array habe ich noch
nicht überprüft; ich wàre im Moment schon froh, wenn die Zahlen stimmen
würden)

Nun meine Frage:

Wie müsste das C# Struct aussehen, damit ich in C++ darauf zugreifen kann
(inklusive structlayout usw)?

MfG
Christoph

Ähnliche fragen