如何将Kotlin中的一个值作为int* 传递给C并接收写入的值?C函数如下所示:
int readValue(long param, int *value);
返回值仅为1或0,表示成功或失败。读取的实际值通过值指针传回。我尝试用cValuesOf Package KotlinInt:
import interop.readValue
fun doIt(): Boolean {
val arg = cValuesOf(0) // This should give me a CValue<Int>, right?
val result = readValue(42L, arg) // Here I call the C function
if (result == 0) {
return false
} else {
println("Read value: ${arg.value}") // doesn't work, there is no arg.value
return true
}
}
但是我打完电话之后就拿不出来结果了,我怎么做才合适呢?
1条答案
按热度按时间nwnhqdif1#
因为Kotlin不像C那样在堆栈上分配变量,所以你需要在堆上分配一个
int*
作为KotlinIntVarOf<Int>
。memScoped()
提供了一个内存作用域,在这个作用域中,已分配的内存将在lambda块结束时自动释放。