问题标签 [cinterop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
215 浏览

c - Kotlin Native:C 对象的所有权和生命周期

我一直在尝试用对象控制底层本机对象的生命周期的想法来包装 CPointer 类型的本机对象。

在 C++ 术语中,我会做类似的事情:

甚至:

我什至不确定这是否正确,但这个想法很简单:对象“其他”由 T 类型的对象持有。

问题是我不知道这在 Kotlin 原生中是否可行:

在我看来,竞技场不会自动回收记忆吧?我必须打电话.free().clear()


有没有办法达到这样的效果?或者唯一的方法是手动使用memScoped和调用 arena 的 clear 或 ptr free ?

或者,防止 K/N 中的内存浪费/泄漏的最佳方法是什么?

0 投票
2 回答
1613 浏览

ios - gradle 的 Kotlin/native cinterop 构建问题

我正在尝试使用 Kotlin 本机和 iOS。我尝试使用raywenderlich的示例作为起点。这个例子有点老了,所以我更新了代码以适应 Kotlin 多平台 1.3.61。我正在使用 AppCode 来构建代码。

我正在努力使用 Kotlin DSL gradle 文件( build.gradle.kts ),该示例使用的是 build.gradle :

我试图将其翻译成我自己的 build.gradle.kts 文件:

从我所看到的 cinterops 工具正在完成它的工作,并正在创建一个 klib 文件和一个 afnetworing.kt ( build/classes/kotlin/ios/main/..... )

但是我无法使用库 AFNetworking!我尝试在 ViewController.kt 文件中添加导入指令:

但这不被认可。这导致项目未构建:

任何人都可以对此有所了解吗?

0 投票
1 回答
558 浏览

kotlin-multiplatform - Kotlin/Native cinterop:.def 文件中的 compilerOpts 与 gradle 中的 compilerOpts

cinterop在for 的文档中Kotlin/Native,您必须定义一个.def文件,例如:

compilerOpts现在您还可以在块中指定 a ,cinterop例如:

我在这里只举了 Kevin Galligan 的这个例子:KMPFirestore

我真的很困惑compilerOpts内部 gradle 和compilerOpts内部.def文件有什么区别?

我没有强大的 C 背景,我只是想学习Kotlin Multiplatform(现在只是想了解如何与 c 或 ObjectiveC 库互操作),但我无法正确设置它们。

我真的很感激一些帮助,因为我什至不完全理解.def文件是如何工作的。

任何与理解这些事情相关的阅读材料都会有很大帮助。

0 投票
0 回答
105 浏览

c - 如何使用 dart ffi 为给定的 C 结构编写绑定?

我试图为以下 C 结构编写 dart ffi 绑定,但我遇到了各种各样的错误。有人可以帮我吗?

也适用于以下代码

我将它用作Pointer<Void>但我希望能够将它用作CXIndex.

这适用于提供与libclangin dart 的绑定的包。欢迎您提出建议。

我在这里先向您的帮助表示感谢。

0 投票
1 回答
563 浏览

kotlin - 在 Mac 上哪里可以找到(安装)Kotlin cinterop 工具

我想尝试构建依赖于某些库的 Kotlin/Native 项目。正如文档所解释的,我需要创建 def 文件(我已经创建)并运行cinterop工具。

但是,我无法在我的 Mac 上找到这个工具,我很好奇它是如何安装的。

你能给我一些建议吗?

0 投票
0 回答
189 浏览

kotlin - DWARF 错误:尝试在 Kotlin/Native cinterop 中包含 secext.h 时出现错位的行号部分

我尝试使用 Gradle 在 Kotlin/Native cinterop 中包含 secext.h winapi 标头:

build.gradle

src/nativeInterop/cinterop/secext.def

src/nativeInterop/cinterop/secext_wrapper.h

我使用的 IDE(带有 Kotlin 插件的 IntelliJ Idea)确实看到了 secext.h 中的函数,如果我不使用它们中的任何一个,它就会编译。但是,当我尝试使用GetUserNameExA时,此错误显示在:linkDebugSharedWindc

我真的不知道如何解决它。

0 投票
1 回答
84 浏览

kotlin-native - kotlin native cinterop 添加linkerOpts的源码

我将一个头文件及其源代码添加到我的 xcode 项目中。

例如,AddToo.h

以下是源代码

测试.def

当我运行 xcode 项目时,

发生错误

架构 arm64 的未定义符号:“_OBJC_CLASS_$_AddTool”,引用自:

那么我应该先将 AddTool 构建为静态库并将其添加到 .def 文件中的 linkerOpts 吗?

还有其他方法可以解决这个问题吗?

我的 kotlin 版本是 1.3.72

谢谢

0 投票
0 回答
132 浏览

kotlin - Kotlin 的 cinterop .def 不适用于相对路径

我有一个需要链接到其他静态库的静态库。

当我尝试运行时./gradlew common:cinteropSomeLibIos

我总是得到IllegalStateException: Could not find 'libabseil.a' binary in neither of [external/lib]

我的定义文件:

一切都在 AndroidStudio/IntelliJ 中运行,但是当使用命令行界面或使用 bazel 构建时,我一直收到上述错误。

我尝试添加:

以及在 gradle 文件中设置 linkerOpts ,但这会导致:

有没有办法让它工作,或者至少以 .def 文件中的相对路径可以工作的方式调用 cinterop 任务?

0 投票
1 回答
62 浏览

swift - 为什么我不能在 Swift Jupyter Notebook 中导入 Glibc?

当我执行时:

作为在新的 Ubuntu 18.04 GCE VM 上运行的笔记本中的第一行,我收到以下错误消息:

0 投票
1 回答
64 浏览

swift - 无法在 Swift 上创建 OSLog 活动

我想使用 OSLog 活动来构建我的日志,但我遇到了 Swift 上缺少所需活动常量的问题,例如OS_ACTIVITY_CURRENTand OS_ACTIVITY_NONE,当我尝试创建活动时出现错误:

os.activity框架有没有任何定义的活动常量的描述(但定义了活动标志OS_ACTIVITY_FLAG_DEFAULT, OS_ACTIVITY_FLAG_DETACHED, OS_ACTIVITY_FLAG_IF_NONE_PRESENT):

如果我们查看 ObjC 标头<os/activity.h>,我们可以找到这些常量:

看起来 OSLog 在 Swift 上受到限制,那么如何使用 OSLog 活动或在哪里可以找到常量?