在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提供的一系列基础类型与宏定义(比如WINBOOL、HANDLE这类Windows API通用类型)。Kotlin/Native的cinterop工具会严格按照你指定的顺序加载头文件,所以必须确保windows.h先被处理,才能让psapi.h中的类型引用正常生效。
修改完成后重新执行构建,应该就能成功生成cinterop绑定,不再出现WINBOOL未定义的报错。如果后续遇到类似的Windows类型未定义问题,优先检查是否遗漏了对应的基础Windows头文件依赖。
内容的提问来源于stack exchange,提问作者pawer




