【发布时间】:2013-07-17 09:33:13
【问题描述】:
我正在使用 JNA 从 DLL 调用一个函数,它需要一个无符号 *short 输入参数
unsigned void my_function(unsigned long handle, unsigned short * serial);
我尝试将串行作为ShortByReference 传递
my_function(long handle, ShortByReference serial);
当我使用它时,my_function 完成了工作,但没有检索到序列号(它保持在其初始化值)。
我也试过了
my_function(long handle, short[] serial);
但它的作用是一样的。
我怎样才能正确地做到这一点?
谢谢,Arn0。
【问题讨论】:
-
您确定您的本机代码实际上正在更新该值吗?
-
确实,我已经将此库与其他编程语言(VBA,以及 MATLAB)一起使用,它确实返回了正确的值。为了指定我的问题,该函数获取句柄值,做一些工作,然后应该填写串行指向的值。
-
确保您的
handle参数使用NativeLong(或Windows 上的int)并且您的调用约定是正确的。 -
我也很确定。该库还有其他功能可以处理,并且这些功能工作正常。我看到的唯一区别是它需要一个指针输入参数。我想知道这个库是否有问题,但它只有在与 java 一起使用时才会卡住。
-
您的问题将 Java
long用于unsigned long,这是不正确的(64 位与不确定的类型大小)。
标签: pointers pass-by-reference jna