Kotlin本机cinterop def文件:如何消除绝对路径?

时间:2019-11-18 16:36:36

标签: kotlin kotlin-multiplatform kotlin-native

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

在较早的版本中,可以在build.gradle中设置linkerOpts,但在1.3.50中,它警告说cinterop不支持“ -linker-option(s)/-linkerOpts / -lopt选项”。请将链接器选项添加到.def文件或二进制编译中。”,并且构建过程会因“未定义符号”错误而失败。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

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


UPD:在评论中共享了GH项目之后,我想在此处添加一些详细信息。 here文档的这一部分对此问题进行了说明:

  

通常,需要为使用本机库的二进制文件指定特定于目标的链接器选项。可以使用二进制文件的linkerOpts属性来完成。

因此,在这种情况下,将选项添加到binaries部分而不是cinterops是正确的。最后,我与

binaries {
    all {
        linkerOpts = ['-L'+rootProject.projectDir+'/libs/NativeBase64/iOS/', '-lNativeBase64']
    }
}