问题描述
我是 Kotlin/Native 的新手!我想创建一个 CPointers 数组来传递它,但很难创建一个。
在 C/C++ 中 void* a[] = {test}
就足够了。但我不能在 K/N 中做同样的事情。
我试过val a: CValuesRef<out copaquePointerVar> = cValuesOf(test)
但它导致以下错误:
尝试查看文档并在网上找到它,但没有一个回答正确。
感谢任何帮助!
解决方法
所以我基本上使用 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
取消引用它,然后将其处理以确保已释放内存。