Entwickler-Ecke
Basistechnologien - Typesignatur nicht Pinvoke kompatibel
Bummibaer - Di 17.06.08 11:59
Titel: Typesignatur nicht Pinvoke kompatibel
Hallo,
ich möchte eine C-DLL aufrufen. Leider bekomme ich obigen Fehler.
Mein C-Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| struct SC_Packet { /*ID of Packet*/ char ID; /*length of data*/ int length; /*data*/ char* data; };
extern "C" __declspec(dllexport) struct SC_Packet SC_ReceivePacket(void); |
Mein CSharp-Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public struct SCPacket { public char ID; public int length; public String data; }; [DllImport("Sercom.dll", CallingConvention = CallingConvention.Cdecl)] public extern static SCPacket SC_ReceivePacket(); |
Was mache ich hier falsch?
Vielen Dank,
Steffen
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Di 17.06.2008 um 12:03
Th69 - Di 17.06.08 15:34
Ein char in C entspricht sbyte in C# (char ist in C# immer 16 Bit groß).
Evtl. mußt du auch noch das Alignment angleichen.
Mehr kann ich dir leider nicht sagen...
Greenberet - Mi 18.06.08 00:58
ich würd das structlayoutattribut bei deiner struct noch auf sequential setzen
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| [StructLayout(LayoutKind.Sequential)] public struct SCPacket { public char ID; public int length; public String data; }; |
vl hilft das ja
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!