繁体   English   中英

C库的C#包装器类

[英]C# Wrapper Class for C library

我想用WiringPi C库中的mcp23017.c中的函数创建一个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#。

在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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM