问题标签 [dart-ffi]

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 回答
1566 浏览

c++ - 如何使用 dart:ffi 将 Uint8List 转换为 C 等效数据类型

我正在尝试将图像发送到我计划使用 dart:ffi 运行的自定义 C++ 代码。我已经成功运行了 hello world 问题,我发送了两个整数并将其中的一些作为另一个整数。

现在我想向它发送整个图像并在我的 C++ 代码上处理它。我可以Uint8List使用CameraImage下面的代码

}

然后我将其转换为Uint8List

我的问题是,我应该如何定义查找函数以将 a 发送Uint8List到 C++ 代码并获取List<bool>,我的 C++ 函数期望cv::mat(我可以调整它以接收整数数组)作为参数并发送布尔向量。

这是我尝试过的

问题是,bool 和 Uint8List 不是 C++ 支持的类型,因此该函数无法识别它们。我应该如何通过频道发送它。

0 投票
1 回答
561 浏览

c++ - 编写 MethodChannel 桥与 dart:ffi 桥以运行 c/c++ 代码以获取响应之间有什么区别?

在我开始我的问题之前,我想指出它与这个问题不相似。 编写平台特定代码与 dart:ffi 代码之间的区别。在这里,提问者询问实际差异,而我试图了解使用这两种方法可以实现的相同任务的差异。

在平台上运行本机 c/c++ 代码,在平台端获取结果(例如 Kotlin)并通过方法通道将其发送到 dart 与编写dart:ffi接口并直接调用本机 c++ 代码有什么区别。它们基本上将提供相同的代码执行。我看到的唯一区别是 MethodChannel 调用将是异步任务与dart:ffi同步任务。除了异步行为之外,从这两种技术中获取响应是否会有任何差异(主要是性能)。

0 投票
1 回答
1688 浏览

flutter - 如何在 iOS 上使用 OpenCV 和 dart:ffi

我正在开发一个颤振插件,它使用 OpenCV 作为依赖项来进行一些图像处理。我创建了一个桥接并初始化了这里提到的查找功能。基本的 sum 函数有效,但是只要我添加

在我的插件 pod 规范文件上。我的 pod 安装失败

这意味着私有 pod 中有一些静态库。因此我启用了

在我的 podspec 文件上并运行pod install. Pod 已安装,应用程序也已运行,但现在我遇到另一个问题,dart:ffi即无法找到该符号。

那么如何dart:ffi在启用 static_framework 的同时找到符号。相关的资源很少dart:ffi

更新

查找功能:

C++ 函数

0 投票
1 回答
408 浏览

flutter - 在 Flutter (dart) 和它的 FFI (C/C++) 之间有效地传递大数组?

我们正在使用 Flutter 开发“图像编辑器”应用程序。因此,我们需要 (1) 在 UI 上显示图像,以及 (2) 使用 C/C++ 中的一些算法来处理图像。

Flutter 在 dart 和 c/c++ 之间确实有 FFI,但我不知道如何有效地传递像图像这样的数组(例如可以是兆字节)?

非常感谢!

0 投票
1 回答
394 浏览

c++ - 通过 Flutter 从 C++ 插件访问资产

由于延迟低,我正在尝试将 Google Oboe 用于 3D 音频处理应用程序。该应用程序将有一个 C++ 后端,它负责处理,前端由 Flutter 完成。我正在运行一些测试以查看它是否可以工作,但我在将资产从 Flutter 加载到双簧管时遇到问题。我检查了 Oboe 的repo中的示例 RhythmGame ,使用 Java 完成,但无法安静地找到直接从 Dart 到 C++ 的方法。前后端的连接是通过dart::ffi

这是我到目前为止所尝试的。根据 Richard Heap在此处发布的示例,我将noise变量从正弦波更改为 wav 文件中歌曲的短片段:

然后 Dart 中的这个函数调用原生库的 Dart 包装器:

Dart 中的包装器是:

_streamWrite是 C++ 中的本机函数:

现在我能听到这首歌,但它的失真太大了。尝试使用正弦时,我也能听到它,但它也有一些失真。我还没有在双簧管中使用回调模式,因为我想先试试这是否有效。

0 投票
0 回答
379 浏览

flutter - 如何将 C++ cv::Mat 转换为 Flutter 变量?

我对扑腾很陌生。我正在尝试通过 dart:ffi 从我的 OpenCV-C++ 代码中发送一个图像以用于 iOS 设备。

我首先将 cv::Mat 转换为向量。我不确定这是否是正确的方法。

尽管如此,我仍然坚持如何定义查找函数。我在 C++ 中的图像处理函数返回一个无符号字符向量。以下是我当前的查找功能。它调试没有错误,但是当我在颤动中调用这个函数时它崩溃了。

我应该如何将 cv:Mat (或向量)从 C++ 发送到颤动?

0 投票
1 回答
1139 浏览

c++ - 使用 dart::ffi 从 Dart 包中调试 C++ 代码

我正在使用dart::ffi用 C++ 开发一个包,用于 Flutter 应用程序(因此在 Dart 中),我想知道是否有更好的调试方法(逐步,变量监视,诸如此类的事情) C++ 代码,而不是记录消息。我在 Android Studio 和 VS Code 中都试过了,但都没有成功。

0 投票
1 回答
862 浏览

c++ - 在 Flutter 应用程序中使用来自 Android NDK 的 AssetManager 类

我一直在尝试在我的 Flutter 应用程序中使用 Android NDK 的AssetManager类来访问音频文件,该类与Google Oboe一起使用。按照Oboe 存储库中的这个示例,我了解到他们是AssetManager这样从 Java 获取的:

基本上,jAssetManager它们通过 JNI 接口从 Java 传递给 C++ 函数的参数。现在我没有使用 JNI,因为我使用的是 Flutter 和 Dart,而 Dart 中与 C++ 函数通信的方式是通过dart:ffi,但是由于我可以创建一个的唯一方法AssetManager是 with AAssetManager_fromJava(env, jAssetManager),所以我需要这两个参数我找不到用 Flutter 和 Dart 替换的方法。

我做了一些研究,当我创建 Flutter FFI 插件时,显然 Dart 代码与 Kotlin 代码通信,然后调用本机 C++ 函数。

这是我的 C++ 函数:

这是该函数的 Dart 包装器:

这是我在 FFI 插件实现中找到的 Kotlin 代码:

最后,这是 Oboe 的人们如何使用 JNI 和 Java 处理它的:

0 投票
0 回答
109 浏览

flutter - 如何将 argv[] 传递给 dart 中的 ac 函数?

我想使用 dart FFI 从 dart 调用 ac 函数 test_main(int argc, char *argv[])。但是下面的代码显然不起作用,因为 Dart 字符串中不能有空字符。一个人如何在 dart 中编写 argv?

0 投票
1 回答
762 浏览

flutter - 如何访问 Flutter for desktop (macOS) 应用程序中的方法

我一直在尝试编写一个可以与 Go 方法通信的 Flutter 桌面应用程序。

去文件:

上述 Flutter 代码执行失败,报错:

但如果我直接执行 dart 而不是flutter run.

我什至尝试创建一个单独的 FFI 包,但不幸的是它也失败了。

FFI 包名称:/my_app/packages/libhello_ffi

我将libhello_ffi.dylib文件放在 /my_app/packages/libhello_ffi/macos 目录下

颤振代码:

错误:

网上没有任何关于 Go 和 Flutter for Desktop 集成的合适文章。