Kotlin / Native c 互操作,可见性降低



是否可以生成具有internal可见性的c刺?

当将 c互操作与 Kotlin/Native 一起使用时,为 c 函数和结构生成的刺public可见性。据我了解,这意味着如果有人将此 Kotlin 代码用作库,生成的刺也会在目标项目中可见。这一事实使得很难在 c 库上创建 Kotlin 包装器。

很抱歉,目前不支持此行为。
首先,由于 cinterop 工具将绑定生成为.klib文件,因此它与单独的模块相关联。因此,如果您以某种方式将它们标记为internal.
带有绑定的.klib只是项目的另一个源集。 然后,它应该可用于将其与不同类型的依赖项连接起来。现在由于某些语言限制,不能使用implementation依赖类型来连接 Kotlin/Native 库,只能连接api一个。但它可能有一天会变得可用。
目前,我可以推荐的最佳选择是将包命名为内部或其他名称,让消费者了解其实用性。

最新更新