可见性降低的 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 之类的,让消费者知道它的实用性。
是否可以生成具有 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 之类的,让消费者知道它的实用性。