You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin/Native中导入C互操作生成的类并调用C函数

Kotlin/Native C互操作导入与调用方法

步骤1:确认构建配置与预生成绑定

  • 首先检查build.gradle.kts中的cinterop配置,示例正确配置如下:
kotlin {
    // 替换为你的目标平台,比如mingwX64、linuxX64、macosX64等
    mingwX64("native") {
        compilations.main {
            cinterops.create("App") {
                // 指向你的.def配置文件路径
                defFile = project.file("src/nativeInterop/cinterop/App.def")
                // 自定义生成绑定的包名,可自由设置
                packageName = "my.cinterop.binding"
            }
        }
        binaries.executable()
    }
}
  • 修改完配置后必须执行一次Gradle构建任务,执行命令 ./gradlew assemble (Windows环境用gradlew.bat assemble),生成C绑定的Kotlin代码,否则IDE不会识别对应函数,也不会弹出代码补全。

步骤2:导入绑定内容

  • 如果你在配置中指定了packageName,直接在Kotlin代码开头导入对应包即可:
import my.cinterop.binding.*
  • 如果你没有指定packageName,默认包名为你cinterops.create时传入的名称,比如示例中的App,导入方式为:
import App.*

步骤3:调用C函数

你头文件中声明的void printNameFromC(char* name),生成的Kotlin绑定函数可直接调用,字符串参数需要用.cstr转换为C兼容的字符串格式,示例代码:

fun main() {
    printNameFromC("测试名称".cstr)
}

无代码补全排查方案

  • 执行Gradle同步:点击IDE右侧Gradle面板的刷新按钮,同步最新的项目配置
  • 清理构建缓存:执行./gradlew clean后重新执行构建任务
  • 检查.def文件:确认headers字段已经正确引入了App.h,头文件路径配置无误

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:57:02