c#调用c++如何使用unit8传递值

c# invoke c++ how to pass value with unit8

我有一个 C# 脚本需要 运行 在我的 C# 应用程序中。

这是我的c++函数,我希望可以在我的c#应用程序中用c#调用它 C++ 原型:

int ApplibUsbSimple_Login(UINT8 *buff)

我使用 C# 调用它:

[DllImport("test.dll", EntryPoint = "login")]
public static extern int Login(????? buff)

我刚才在google和Whosebug中搜索了答案,但是我不能 得到答案。 我应该如何更换?????变量正确

当然,C# 没有确切的类型 uint8,但等价物是 byte.

我想你可以使用 byte[]

https://docs.microsoft.com/en-us/dotnet/articles/csharp/language-reference/keywords/byte

正如其他人已经指出的那样,如果您的本机函数中使用的 UINT8 类型表示一个 8 位字节,您可以将其映射到 C# 中的 byte 类型。

此外,根据 this MSDN doc page,如果您查看 C 样式数组 部分,您可以将此 C# 代码用于字节数组参数:

[MarshalAs(UnmanagedType.LPArray)] byte[] buff

另外,有几个问题请教各位:原生C接口函数如何知道输入数组的size?这个数组是否以 0 结尾?该函数中是否还有另一个参数以字节为单位指定数组的大小?数组的大小是否固定并指定为函数文档的一部分?