Kotlin Native cinterop def 文件:如何消除绝对路径?
Kotlin Native cinterop def file: how to eliminate absolute path?
当指定linkerOpts时,我们需要为-L
选项设置绝对路径,但它很容易被破坏。
在旧版本中,在 build.gradle 中设置 linkerOpts
可以工作,但在 1.3.50 中,它会警告“-linker-option(s)/-linkerOpts/-lopt 选项是cinterop 不支持。请将链接器选项添加到 .def 文件或二进制编译。”,构建失败并出现 "Undefined symbols" 错误。
我能做什么?
此选项将被弃用一次,因此在 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']
}
}
当指定linkerOpts时,我们需要为-L
选项设置绝对路径,但它很容易被破坏。
在旧版本中,在 build.gradle 中设置 linkerOpts
可以工作,但在 1.3.50 中,它会警告“-linker-option(s)/-linkerOpts/-lopt 选项是cinterop 不支持。请将链接器选项添加到 .def 文件或二进制编译。”,构建失败并出现 "Undefined symbols" 错误。
我能做什么?
此选项将被弃用一次,因此在 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']
}
}