DLLImport Problem ulong Array
-
Hi,
Ich habe Problme beim Aufruf einer Funktion die im Parameterkopf ein unsigned long array zurückgibt.short func(unsigned short *retsize,unsigned long retdata[]);
In C# hab ich immoment es so aufgerufen:
[DllImport("RPPM3Csafe.dll")] static extern short func(ref UInt16 rsp_data_size, out UInt32[] rsp_data);
Ich habs auch mit ref probiert, aber was das gleiche Ergebnis.
Das ist die Fehlermeldung:
Die Laufzeit hat einen schwerwiegenden Fehler entdeckt. Fehleradresse: "0x79e7b7b1" in Thread "0xbd0". Fehlercode: 0xc0000005. Bei diesem Fehler könnte es sich um ein Problem in der CLR oder in den unsicheren oder nicht verifizierbaren Teilen des Benutzercodes handeln. Übliche Ursachen dieses Bugs sind Marshallerfehler für COM-Interop oder PInvoke, die den Stapel beschädigen können
Wie muss ich die Funktion richtig aufrufen?
MFG JooAchim
-
hi,
[DllImport("dll.dll")] static extern short func(ref UInt16 rsp_data_size, out IntPtr rsp_data); IntPtr prsp_data; UInt32[] rsp_data = new UInt32[255]; func(ref rsp_data_size,out prsp_data); for (int i = 0; i < rsp_data_size; ++i) { rsp_data[i] = Marshal.ReadInt32(Marshal.ReadIntPtr(prsp_data,i *IntPtr.Size)); // hier feler }
hab das jetzt mi IntPtr gemacht.Jetzt sag er mir aber das ich in einem geschützen Bereich versuche zu schreiben und das das nicht gestattet sei.
Kann man das irgentwie zulassen? Oder muss man da ganz anders rangehen?
MFG JooAchim
-
Hi,
Habs gelöst.Und will die Lösung natürlich euch nicht vorbehalten. Auch wenns nur ein Link ist.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconarrayssample.aspMFG JooAchim