Pointers JNA通过引用传递指针

Pointers JNA通过引用传递指针,pointers,pass-by-reference,jna,Pointers,Pass By Reference,Jna,我使用JNA从DLL调用函数,它需要一个无符号*短输入参数 unsigned void my_function(unsigned long handle, unsigned short * serial); 我试图以ShortByReference my_function(long handle, ShortByReference serial); 当我使用它时,my_函数会起作用,但不会检索序列号(它保持在初始化值) 我也试过了 my_function(long handle, short

我使用JNA从DLL调用函数,它需要一个无符号*短输入参数

unsigned void my_function(unsigned long handle, unsigned short * serial);
我试图以
ShortByReference

my_function(long handle, ShortByReference serial);
当我使用它时,
my_函数
会起作用,但不会检索序列号(它保持在初始化值)

我也试过了

my_function(long handle, short[] serial);
但事实也是如此

我怎样才能正确地做呢


谢谢,阿诺

使用
NativeLong
(而不是
long
)表示本机
无符号long

您确定您的本机代码实际上正在更新该值吗?确实,我是,我已将该库与其他编程语言(VBA,以及MATLAB)一起使用,并且它确实返回了正确的值。为了说明我的问题,函数接受句柄值,做了一些工作,然后应该填充serial所指的值。确保
handle
参数使用
NativeLong
(或windows上的
int
)并且调用约定正确。我也确信这一点。这个库还有其他的函数可以处理,这些函数工作得很好。我看到的唯一区别是它采用了指针输入参数。我想知道该库是否有问题,但它只有在与java一起使用时才会出现问题。您的问题使用java
long
表示
无符号long
,这是不正确的(64位与不确定的类型大小)。