kotlin - Kotlin Native cinterop def文件:如何消除绝对路径?

标签 kotlin kotlin-multiplatform kotlin-native

当指定linkerOpts时,我们需要为-L选项设置绝对路径,但是很容易中断。

在旧版本中,可以在build.gradle中设置linkerOpts起作用,但在1.3.50中,它警告“cinterop不支持-linker-option / s / linkerOpts / lopt选项。请在.def中添加链接器选项。文件或二进制编译。”,并且构建的确失败,并出现“ undefined symbol ”错误。

我能做什么?

最佳答案

此选项将被弃用一次,因此在1.3.50发行后有意添加了该警告。这里的动机是应该通过.def文件设置所有链接器选项,甚至是platform-specific
但是,在这种情况下,构建不应分解。您是否可以添加脚本内容以使其更清晰-到底是什么导致了错误?

UPD:在评论中共享了GH项目之后,我想在此处添加一些详细信息。在文档here中描述了此问题,这部分内容:

Often it's necessary to specify target-specific linker options for a binary which uses a native library. It can be done using the linkerOpts property of the binary.



因此,在这种特殊情况下,将选项添加到binaries部分而不是cinterops是正确的。最后,我与
binaries {
    all {
        linkerOpts = ['-L'+rootProject.projectDir+'/libs/NativeBase64/iOS/', '-lNativeBase64']
    }
}

关于kotlin - Kotlin Native cinterop def文件:如何消除绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919144/

相关文章:

unit-testing - Kotlin-multiplatform:如何执行 iOS 单元测试

kotlin - 在一次迭代中找到列表中匹配条件的任意 2 个对象

kotlin - 内联扩展函数 (let/run/also/...) 生成未使用的局部变量

android - 如何从jetpack compose中的惰性列中删除项目

kotlin - Kotlin 中的多平台输入流替代方案?

android - 添加 Kotlin Multiplatform 模块作为依赖项时出错 : "Android project without build variants, and cannot be built."

kotlin - 在 kotlin-multiplatform 上生成 UUID?

spring - 密封类作为一个实体

gradle - 将参数传递给Kotlin/本地运行任务

android - 从多平台 kotlin 项目访问 C/C++ 库