首页 > 解决方案 > Kotlin 的 cinterop .def 不适用于相对路径

问题描述

我有一个需要链接到其他静态库的静态库。

当我尝试运行时./gradlew common:cinteropSomeLibIos

我总是得到IllegalStateException: Could not find 'libabseil.a' binary in neither of [external/lib]

我的定义文件:

headers = SomeHeader.h
language = Objective-C
package = com.mypackage
staticLibraries = libabseil.a libMyLib.a
libraryPaths = external/lib
linkerOpts = -lObjC -all_load

一切都在 AndroidStudio/IntelliJ 中运行,但是当使用命令行界面或使用 bazel 构建时,我一直收到上述错误。

我尝试添加:

val main by compilations.getting {
        kotlinOptions {
            freeCompilerArgs = listOf(
                "-include-binary", "$libLocation/libabseil.a"
            )
        }
    }

以及在 gradle 文件中设置 linkerOpts ,但这会导致:

warning: -linker-option(s)/-linkerOpts option is not supported by cinterop. Please add linker options to .def file or binary compilation instead.

有没有办法让它工作,或者至少以 .def 文件中的相对路径可以工作的方式调用 cinterop 任务?

标签: kotlinkotlin-multiplatformcinterop

解决方案


推荐阅读