Liebe kluge Köpfe,
ich bin wahrscheinlich komplett auf euch angewiesen. Ich möchte eine in c++ geschriebene DLL in c# benutzen. So. Ich weiss, dass man es mithilfe von Marshaling machen muss. Die Aufrufe gibt es in c++. Jetz möchte ich sie zu c# umwandeln. Ich habe es versucht und das hier
zur
umgewandelt. Es bringt zumindest keine Fehler, aber ich vermute, dass es doch nicht ganz richtig ist. Leider habe ich bei weiteren Funktionen versagt.
Kann mir jemand helfen einige Aufrufe richtig zu "umwandeln"? Es handelt sich z.B. um so einz:
Eben was ich in der OpenComm als Rückgabewert erhalte, soll hier an Stelle von hComm sein. Ich habe so versucht:
Im c# Programmcode mache ich dann
es kommt aber bei DetectReader ein Runtimefehler. d.h ich mache es falsch.
wie mache ich es richtig?
ich bin wahrscheinlich komplett auf euch angewiesen. Ich möchte eine in c++ geschriebene DLL in c# benutzen. So. Ich weiss, dass man es mithilfe von Marshaling machen muss. Die Aufrufe gibt es in c++. Jetz möchte ich sie zu c# umwandeln. Ich habe es versucht und das hier
Code:
void* __cdecl OpenComm(char* commDevice, char autodetect, struct presetSettings* settings);
Code:
[DllImport("Reader.dll")]
internal extern static byte OpenComm([MarshalAs(UnmanagedType.LPArray)] byte[] device, byte autodetect, ref Reader.presetSettings settings);
Kann mir jemand helfen einige Aufrufe richtig zu "umwandeln"? Es handelt sich z.B. um so einz:
Code:
char* __cdecl DetectReader(void* hComm, char* buffer);
Code:
[DllImport("Reader.dll")]
internal extern static byte[] DetectReader(byte h_comm, [MarshalAs(UnmanagedType.LPArray)] byte[] buffer);
Code:
byte b_hComm = OpenComm(..);
DetectReader(h_Comm...);
wie mache ich es richtig?