我如何使用科特林/本地实现在C头文件中列出的功能呢?

时间:2019-01-31 18:21:22

标签: kotlin-native

我正在尝试使用Kotlin / native编写libretro内核。 libretro核心由一个C库(动态或静态)组成,该库导出libretro.h中概述的所有功能。我相信这应该是可行的,因为kotlin / native能够导出可以被C程序调用的库,但是我还没有设法使它输出甚至类似于libretro头文件的库。

我最初的方法涉及使用cinterop工具构建klib文件,并希望它可以让我让一个类将标头实现为接口。这并没有工作,因为我已经走向试图让我的科特林代码输出,类似于libretro头文件C头文件。我已经没有用了上述两种方法的任何运气,我一直没能想到的使用纯粹的科特林/原生的另一种方式。

我的代码

val RETRO_DEVICE_NONE: Int = 0

@CName(externName = "hello", shortName = "hello")
fun hello(): String = "Hello, Kotlin/Native!"

@CName(externName = "helloInt", shortName = "helloInt")
fun helloInt(): Int = 123

fun main(args: Array<String>) {
    println(hello())
}

导出到标头后,其外观类似于this。我可以使用@CName批注将函数从默认放置的包结构中取出,但是我仍然遇到函数类型签名,#define宏和枚举(以及其他可能存在的问题),但这些都是到目前为止我遇到的那些)。

0 个答案:

没有答案
相关问题