在 java 中为 C dll 中实现的方法传递一个无符号变量作为引用
pass an unsigned variable as reference in java for a method implemented in C dll
我有一个 dll,其中包含一些像这样的方法
f(DWORD a, DWORD b, ulong *c)
我有一个在C#中声明这个方法的例子如下
f(uint a, ref uint b, ref IntPtr c)
现在我想在 java 中实现相同的功能。 java 不支持 uint 和 ref。我添加了 JOOU 库来拥有 UInteger 但我不知道如何将它作为参考传递。
使用 jna 库,我们可以传递 IntByReference 而不是 ref uint。调用该方法后,我们只需要将其更改为无符号值
所以在 java 中我们有
f(UINT a, IntByReference int_b, PointerByReference c)
long b = int_b & 0xFFFFFFFFL;
我有一个 dll,其中包含一些像这样的方法
f(DWORD a, DWORD b, ulong *c)
我有一个在C#中声明这个方法的例子如下
f(uint a, ref uint b, ref IntPtr c)
现在我想在 java 中实现相同的功能。 java 不支持 uint 和 ref。我添加了 JOOU 库来拥有 UInteger 但我不知道如何将它作为参考传递。
使用 jna 库,我们可以传递 IntByReference 而不是 ref uint。调用该方法后,我们只需要将其更改为无符号值 所以在 java 中我们有
f(UINT a, IntByReference int_b, PointerByReference c)
long b = int_b & 0xFFFFFFFFL;