【问题标题】:How to add a dependency to a native library from a kotlin native如何从 kotlin 本机向本机库添加依赖项
【发布时间】:2022-01-05 11:53:58
【问题描述】:

例如,我知道 kotlin native 有 CoreCrypto。如何修改 kotlin gradle 脚本以便编译以下代码:

import kotlinx.cinterop.*
import platform.CoreCrypto.CC_SHA256   // compile error, obviously, as there's no depenedncy
import platform.CoreCrypto.CC_SHA256_DIGEST_LENGTH

fun main() {
  // ...
}

我的 gradle 脚本:

plugins {
    kotlin("multiplatform") version "1.6.10"
}

group = "com.jaga"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

kotlin {
    val hostOs = System.getProperty("os.name")
    val isMingwX64 = hostOs.startsWith("Windows")
    val nativeTarget = when {
        hostOs == "Mac OS X" -> macosX64("native")
        hostOs == "Linux" -> linuxX64("native")
        isMingwX64 -> mingwX64("native")
        else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
    }

    nativeTarget.apply {
        binaries {
            executable {
                entryPoint = "main"
            }
        }
    }
    sourceSets {
        val nativeMain by getting
        val nativeTest by getting
    }
}

我已经找了好几个小时了。

文档:https://kotlinlang.org/docs/native-platform-libs.html

这里有例子:https://github.com/JetBrains/kotlin/tree/master/kotlin-native/samples

但它们不是自包含的,并且以一些我无法在单个 gradle 脚本中重现的复杂通用方式处理依赖关系。

编辑:实际上,即使是这些示例也无法构建,因此它们不能作为参考...

【问题讨论】:

  • 您好!您能否在 kotl.in/issue 提交问题?使用 Mac 主机时应正确解析此代码。我强调的是主机操作系统要求,因为这些符号是根据可用的系统标头创建的,因此它们无法在 Linux 或 Windows 主机上交付。

标签: kotlin kotlin-native


【解决方案1】:

我理解这种挫败感;我花了几个小时才让 curl 使用自定义构建。我同意官方文档没有帮助并且已经过时,因此请改用 Ktor 之类的参考项目。

【讨论】:

猜你喜欢
  • 2013-12-06
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多