Передайте аргумент типа void** (указатели указателей) с помощью Java FFM API.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Передайте аргумент типа void** (указатели указателей) с помощью Java FFM API.

Сообщение Anonymous »

Как передать аргумент void** с помощью Java FFM API?
void initHandle(void* handle);
void useHandles(void** handles);

У меня не сработало следующее:
var LINKER = Linker.nativeLinker();
var SYM_LOOKUP = SymbolLookup.loaderLookup().or(LINKER.defaultLookup());
var INIT_HANDLE = LINKER.downcallHandle(SYM_LOOKUP.find("init_handle").orElseThrow(), FunctionDescriptor.ofVoid(ADDRESS));
var USE_HANDLES = LINKER.downcallHandle(SYM_LOOKUP.find("use_handles").orElseThrow(), FunctionDescriptor.ofVoid(ADDRESS));

try (var arena = Arena.ofConfined()) {
List handleList = new ArrayList();
for (int i = 0; i < 5; i++) {
var handle = arena.allocate(ADDRESS);
INIT_HANDLE.invokeExact(handle);
handleList.add(handle);
}

// ...

var handlesHandle = arena.allocate(ADDRESS, handleList.size());
for (int i = 0; i < handleList.size(); i++) {
handlesHandle.setAtIndex(ADDRESS, i, handleList.get(i).get(ADDRESS, 0));
}
USE_HANDLES.invokeExact(handlesHandle.get(ADDRESS, 0)); // this is not working as expected
}


Подробнее здесь: https://stackoverflow.com/questions/789 ... va-ffm-api
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»