Autor Beitrag
Bummibaer
Hält's aus hier
Beiträge: 7

Win XP,Solaris,Linux
perl,C#
BeitragVerfasst: Di 17.06.08 11:59 
Hallo,

ich möchte eine C-DLL aufrufen. Leider bekomme ich obigen Fehler.
Mein C-Code:
ausblenden 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        public struct SCPacket
        {
            /*ID of Packet*/
            public char ID;
            /*length of data*/
            public int length;
            /*data*/
            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 user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Di 17.06.2008 um 12:03
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mi 18.06.08 00:58 
ich würd das structlayoutattribut bei deiner struct noch auf sequential setzen
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
[StructLayout(LayoutKind.Sequential)]
public struct SCPacket
{
    /*ID of Packet*/
    public char ID;
    /*length of data*/
    public int length;
    /*data*/
    public String data;
};
vl hilft das ja