我目前正在尝试使用JNA访问C API。但是我对通过引用传递的无符号整数参数有问题。

所以这是有问题的C函数:

int EE_DataGetNumberOfSample(DataHandle hData, unsigned int* nSampleOut);


在Java中,我有:

public int EE_DataGetNumberOfSample(Pointer hData, ByReference nSampleOut);


这是我的使用方式:

IntByReference nSamplesTaken = new IntByReference();

edk.EE_DataGetNumberOfSample(hData.getValue(), nSamplesTaken);

int nativeNSamplesTaken = nSamplesTaken.getValue();

System.out.println(Integer.toBinaryString(nativeNSamplesTaken)+"("+nativeNSamplesTaken+")");


这给了我:


  11000100110110010011000000(51602624)


完全应该为0。

我使用JNA-API的方式有问题吗?

谢谢!

最佳答案

要回答我自己的问题:

我在这里发布的代码片段没有错,但是还有另一个与问题无关的完全不相关的错误。

[关闭]

关于c - 通过引用JNA无符号整数给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2809128/

10-10 22:41