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

Posted

技术标签:

【中文标题】c#调用c++如何用unit8传递值【英文标题】:c# invoke c++ how to pass value with unit8 【发布时间】:2017-05-26 09:31:39 【问题描述】:

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

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

int ApplibUsbSimple_Login(UINT8 *buff)

我使用 c# 调用它:

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

我刚才在 google 和 *** 中找到了答案,但我不能 得到答案。 我应该如何更换??????有正确的变量

【问题讨论】:

【参考方案1】:

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

此外,根据this MSDN doc page,如果您查看 C-Style Arrays 部分,您可以使用此 C# 代码作为字节数组参数:

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

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

【讨论】:

【参考方案2】:

我觉得你可以用byte[]

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

【讨论】:

如何在c#中传递参数?我想传递值:0x4f @winter 你只想传递一个字节?我认为您不了解您调用的功能。阅读它的文档。它接受一个数组。【参考方案3】:

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

【讨论】:

以上是关于c#调用c++如何用unit8传递值的主要内容,如果未能解决你的问题,请参考以下文章

C#调用C++的dll库怎么传递结构体中不定长度的char数组

c++中如何用函数传递fstream类型

C# 调用C++ DLL,而c++函数的有一个参数需要是null,该怎么传递?

如何用c语言作出有图形界面的小程序?

如何用c语言作出有图形界面的小程序?

NET问答: 如何用 C# 计算相对时间 ?