76 字
1 分钟
Kotlin cinterop的简单记录

映射类型#

C类型Kotlin映射类型
charByteVar
shortShortVar
intIntVar
longLongVar
floatFloatVar
doubleDoubleVar
pointerCPointer<*>
void*CPointer

ByteArray的表示#

在Cinterop中表示一个ByteArray需要手动分配内存


fun main() {
    val byteArray = byteArrayOf(0x01, 0x02, 0x03, 0x04)
    memScoped {
        val cPointer = allocArray<ByteVar>(byteArray.size)
        byteArray.forEachIndexed { index, byte ->
            cPointer[index] = byte
        }
        println(cPointer)
    }
}

这里将ByteArray转换成了C的 unsgined char*类型

WIP /(ㄒoㄒ)/~~