0

我在我的项目中使用 JNA 从 Windows 中的 C 函数接收长值。

方法是:

long identifier();

当我在 64 位上使用我的虚拟机(Windows 64 的 JRE 1.7.0_05)时,我将编译后的 dll 用于 64 位,我得到了这个数字:

identifier = 528913750 

如果我使用带有 32 位编译 dll 的虚拟机(Windows 32 的 JRE 1.7.0_07),我得到这个数字:

identifier = 369896101206

正确的是第一个!(对于 64 位)

它们的二进制值为:

64 bits =           11111100001101001010101010110
32 bits = 101011000011111100001101001010101010110

有人知道为什么我一开始就得到这个 1010110 的 32 位吗?

4

1 回答 1

0

Wikipedia中有一个表描述了 JNA 中本机类型的映射。直接转换为 long 仅支持 64 位,否则必须使用NativeLong 。

在这篇文章中还介绍了如何映射一个native long。

于 2012-09-25T14:14:44.700 回答