java字节是否与C#字节相同?

如果输入参数是字节数组 – byte [],则dll中的native方法在java中工作。 如果我们使用c#中的相同方法,则抛出EntryPointNotFoundException。

是因为java和c#中的byte []是不同的东西? 如果是这样我应该如何使用c#中的本机函数?

Java缺少无符号类型。 特别是,Java缺少无符号字节的基本类型。 Java字节类型是有符号的,而C#字节是无符号的,sbyte是有符号的。

是因为java和c#中的byte []是不同的东西?

是。

  • Endianness: Java将内部存储为Big Endian,而默认情况下.NET为Little Endian。
  • 签名: C#字节是无符号的。 Java字节已签名。

将int转换为字节数组时看到不同的结果 – .NET vs Java 。

什么是原生function的签名? 你如何在Java和C#中声明它?

EntryPointNotFoundException的最常见原因是函数名称被破坏(例如,如果函数是用C ++编写的,则为true)或拼写错误。

另一个问题来源是用于区分ANSI和Unicode版本函数的WinAPI函数的“W”和“A”后缀。 .NET互操作机制可以尝试猜测函数后缀,这可能是混淆的根源,