Отвечая на вопрос, который уже есть в github от @ olonho
Вам необходимо выделить переменную, используя специальные типы платформ NativePlacement
import kotlinx.cinterop.*
import platform.windows.*
val buffer = nativeHeap.allocArray<ByteVar>(size)
<use buffer>
nativeHeap.free(buffer)
, но во избежание бесплатного вызова или нераспределенной памяти вы можете использовать memScoped
val fileSize = memScoped {
val statBuf = alloc<statStruct>()
val error = stat("/", statBuf.ptr)
statBuf.st_size
}
важно, привязка указателя будет с statBuf.ptr, тогда ваш код будет:
memScoped {
val oldFile = "README.md"
val newFile = "${oldFile}.cp"
val bool = alloc<BOOLVar>()
bool.value = FALSE
val result = CopyFileExA(
oldFile,
newFile,
null,
null,
bool.ptr,
COPY_FILE_FAIL_IF_EXISTS
)
}
Это должно быть похоже, если вам нужно связать с библиотекой target-c.