передать беззнаковую переменную в качестве ссылки в java для метода, реализованного в C dll - PullRequest
1 голос
/ 28 мая 2020

У меня есть dll, включающая несколько таких методов

f(DWORD a, DWORD b, ulong *c)

У меня есть пример объявления этого метода в C# следующим образом

f(uint a, ref uint b, ref IntPtr c)

теперь я хочу реализовать то же в java. Ни uint, ни ref не поддерживаются java. Я добавил библиотеку JOOU, чтобы иметь UInteger, но я не знаю, как передать ее в качестве ссылки.

1 Ответ

0 голосов
/ 30 мая 2020

Используя библиотеку jna, мы можем передать IntByReference вместо ref uint. После вызова метода нам нужно только изменить его на значение без знака. Итак, в java мы имеем

f(UINT a, IntByReference int_b, PointerByReference c)
long b = int_b & 0xFFFFFFFFL;
...