gpt4 book ai didi

winapi - 如何初始化 LPBOOL? Kotlin Native 中的 Win32 Api

转载 作者:行者123 更新时间:2023-12-02 11:08:51 26 4
gpt4 key购买 nike

我如何在 Kotlin Native 中调用它

    val result = CopyFileExA(
oldFile,
newFile,
null,
null,
false,
COPY_FILE_FAIL_IF_EXISTS
)

false不被接受为 LPBOOL ?如何初始化 LPBOOL 以在 Kotlin native 界面中使用?

我收到以下错误:

the boolean literal does not conform to the expected type

LPBOOL? /* = CPointer */>? */ false,

最佳答案

回答 github from @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
}

重要的是,指针绑定(bind)将与 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
)
}

如果您需要与objective-c 库绑定(bind),这必须是相似的。

关于winapi - 如何初始化 LPBOOL? Kotlin Native 中的 Win32 Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52281549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com