Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Kotlin/JVM中加载Kotlin/本机共享库_Kotlin_Shared Libraries_Interop_Kotlin Native - Fatal编程技术网

在Kotlin/JVM中加载Kotlin/本机共享库

在Kotlin/JVM中加载Kotlin/本机共享库,kotlin,shared-libraries,interop,kotlin-native,Kotlin,Shared Libraries,Interop,Kotlin Native,是否有相对简单的方法将Kotlin/本机动态库加载到Kotlin/JVM中。我的案例的一些细节:我有一些Kotlin/JVM接口,例如IGenerator: interface IGenerator { fun generate(): ByteArray } 出于性能考虑,我想使用本机代码实现这个接口。如果没有Kotlin/Native,我将编写一个C/C++代码,然后将其编译到共享库中,并使用例如SWIG()构建一个JVM包装器。这个工具为我的共享库生成JNI包装,加载到我的Kotli

是否有相对简单的方法将Kotlin/本机动态库加载到Kotlin/JVM中。我的案例的一些细节:我有一些Kotlin/JVM接口,例如
IGenerator

interface IGenerator {
   fun generate(): ByteArray
}
出于性能考虑,我想使用本机代码实现这个接口。如果没有Kotlin/Native,我将编写一个C/C++代码,然后将其编译到共享库中,并使用例如SWIG()构建一个JVM包装器。这个工具为我的共享库生成JNI包装,加载到我的Kotlin/JVM应用程序中会很好


所以问题是:有没有一种方便的方法将Kotlin/本机共享库加载到Kotlin/JVM应用程序中?我希望使用任何类型的Kotlin工具,而不创建单独的包装或任何其他巫毒魔法。

如果使用gradle,它足够简单(:shared is Kotlin/Native Multiplatform project):


然后,您可以在Kotlin/JVM项目中使用用
:shared
编写的任何K/N方法。

恐怕它不能按您的意愿工作。Kotlin/Native可以编译到共享库中,但它将导致与C/C++相同的包装。如果您想使用native,就必须使用Kotlin/native编写,使用其编译器生成二进制文件。此外,您还可以在本机代码和JVM代码之间共享一些逻辑。出于这个原因,有一个多平台插件,如下所述。但我还提到,目前Kotlin/Native还没有准备好展示非凡的性能,因为它仍处于测试阶段。
implementation project(':shared')