C库的C#包装类

时间:2016-08-09 13:35:00

标签: c# linux raspberry-pi wiringpi

我想在mcp23017.c C库中使用WiringPi中的函数创建一个C#包装类。我把这个现有的C#WiringPi WrapperClass用于其他功能。我想扩展这个包装类以使用mcp23017的函数。我尝试在包装器中创建一个带有一个函数的新类:

public class mcp23017
{

    [DllImport("libmcp23017.so", EntryPoint = "myPinMode")]
    public static extern void myPinMode(struct wiringPiNodeStruct *node,Int32 pin, Int32 mode);

}

但是我得到了struct元素的这些错误。

) expected.
; expected.
{ expected.
} expected.
Invalid token "*" in class struct or interface member declaration

我是否必须在包装类中定义结构?它是如何工作的?不熟悉这一点,因为我不熟悉使用C#。

1 个答案:

答案 0 :(得分:0)

对C#中的参数使用struct无效。编组员应该为您处理这种行为。也许你的意思是这样的。

[StructLayout(LayoutKind.Sequential)]
public struct WiringNode
{
    //Struct members here
}

[DllImport("libmcp23017.so", EntryPoint = "myPinMode")]
public static extern void myPinMode(ref WiringNode node, Int32 pin, Int32 mode);

然后称为:

var myStruct = new WiringStruct();
//Set struct members

myPinMode(ref myStruct, whatever, whatever);