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

Kotlin / Native c interop with reduced visibility

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

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

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