You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Kotlin-Native中链接PSAPI时遇‘WINBOOL未定义’错误求助

解决Kotlin/Native中链接PSAPI库时的WINBOOL未定义错误

这个问题的根源很明确——WINBOOL并非psapi.h自身定义的类型,它是Windows核心头文件windows.h中声明的基础typedef。直接引入psapi.h时,编译器找不到这个基础类型的定义,就会抛出你遇到的错误。

修复方案:修改psapi.def文件

只需要在引入psapi.h前先加载windows.h,让编译器先处理Windows基础类型定义,再解析PSAPI的内容即可:

headers = windows.h psapi.h
headerFilter = psapi/*
linkerOpts.mingw = -lpsapi

为什么这能解决问题?

psapi.h本身依赖windows.h提供的一系列基础类型与宏定义(比如WINBOOLHANDLE这类Windows API通用类型)。Kotlin/Native的cinterop工具会严格按照你指定的顺序加载头文件,所以必须确保windows.h先被处理,才能让psapi.h中的类型引用正常生效。

修改完成后重新执行构建,应该就能成功生成cinterop绑定,不再出现WINBOOL未定义的报错。如果后续遇到类似的Windows类型未定义问题,优先检查是否遗漏了对应的基础Windows头文件依赖。

内容的提问来源于stack exchange,提问作者pawer

火山引擎 最新活动