Kotlin/Native, как создать массив CPointers?

Я новичок в Kotlin/Native! Я хотел бы создать массив CPointers, чтобы передать его, но мне трудно его создать.

В C/C++ void* a[] = {test} достаточно. Но я не могу сделать то же самое в K/N.

Я пробовал val a: CValuesRef<out COpaquePointerVar> = cValuesOf(test)

Но это приводит к следующей ошибке:

Пытался просмотреть документы и найти их в Интернете, но ни один из них не дал правильного ответа.

Любая помощь приветствуется!


person Animesh Sahu    schedule 20.12.2020    source источник


Ответы (1)


В общем, я сделал то, что хотел, используя StableRef

on_exit(staticCFunction { _, argsPtr ->
    val argsStableRef = argsPtr!!.asStableRef<List<COpaquePointer>>()
    val args = argsStableRef.get()

    // Cleanup code

    argsStableRef.dispose()
}, StableRef.create(listOf(/* All the pointers */)).asCPointer())

По сути, преобразование List<COpaquePointer> в StableRef и извлечение из него указателя, а затем, при необходимости, его удаление через asStableRef и после этого удалите его, чтобы освободить память.

person Animesh Sahu    schedule 20.12.2020