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 结尾?该函数中是否还有另一个参数以字节为单位指定数组的大小?数组的大小是否固定并指定为函数文档的一部分?
我有一个 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 结尾?该函数中是否还有另一个参数以字节为单位指定数组的大小?数组的大小是否固定并指定为函数文档的一部分?