问题标签 [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.
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++ 支持的类型,因此该函数无法识别它们。我应该如何通过频道发送它。
c++ - 编写 MethodChannel 桥与 dart:ffi 桥以运行 c/c++ 代码以获取响应之间有什么区别?
在我开始我的问题之前,我想指出它与这个问题不相似。 编写平台特定代码与 dart:ffi 代码之间的区别。在这里,提问者询问实际差异,而我试图了解使用这两种方法可以实现的相同任务的差异。
在平台上运行本机 c/c++ 代码,在平台端获取结果(例如 Kotlin)并通过方法通道将其发送到 dart 与编写dart:ffi
接口并直接调用本机 c++ 代码有什么区别。它们基本上将提供相同的代码执行。我看到的唯一区别是 MethodChannel 调用将是异步任务与dart:ffi
同步任务。除了异步行为之外,从这两种技术中获取响应是否会有任何差异(主要是性能)。
flutter - 如何在 iOS 上使用 OpenCV 和 dart:ffi
我正在开发一个颤振插件,它使用 OpenCV 作为依赖项来进行一些图像处理。我创建了一个桥接并初始化了这里提到的查找功能。基本的 sum 函数有效,但是只要我添加
在我的插件 pod 规范文件上。我的 pod 安装失败
这意味着私有 pod 中有一些静态库。因此我启用了
在我的 podspec 文件上并运行pod install
. Pod 已安装,应用程序也已运行,但现在我遇到另一个问题,dart:ffi
即无法找到该符号。
那么如何dart:ffi
在启用 static_framework 的同时找到符号。相关的资源很少dart:ffi
。
更新
查找功能:
C++ 函数
flutter - 在 Flutter (dart) 和它的 FFI (C/C++) 之间有效地传递大数组?
我们正在使用 Flutter 开发“图像编辑器”应用程序。因此,我们需要 (1) 在 UI 上显示图像,以及 (2) 使用 C/C++ 中的一些算法来处理图像。
Flutter 在 dart 和 c/c++ 之间确实有 FFI,但我不知道如何有效地传递像图像这样的大数组(例如可以是兆字节)?
非常感谢!
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++ 中的本机函数:
现在我能听到这首歌,但它的失真太大了。尝试使用正弦时,我也能听到它,但它也有一些失真。我还没有在双簧管中使用回调模式,因为我想先试试这是否有效。
flutter - 如何将 C++ cv::Mat 转换为 Flutter 变量?
我对扑腾很陌生。我正在尝试通过 dart:ffi 从我的 OpenCV-C++ 代码中发送一个图像以用于 iOS 设备。
我首先将 cv::Mat 转换为向量。我不确定这是否是正确的方法。
尽管如此,我仍然坚持如何定义查找函数。我在 C++ 中的图像处理函数返回一个无符号字符向量。以下是我当前的查找功能。它调试没有错误,但是当我在颤动中调用这个函数时它崩溃了。
我应该如何将 cv:Mat (或向量)从 C++ 发送到颤动?
c++ - 使用 dart::ffi 从 Dart 包中调试 C++ 代码
我正在使用dart::ffi用 C++ 开发一个包,用于 Flutter 应用程序(因此在 Dart 中),我想知道是否有更好的调试方法(逐步,变量监视,诸如此类的事情) C++ 代码,而不是记录消息。我在 Android Studio 和 VS Code 中都试过了,但都没有成功。
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 处理它的:
flutter - 如何将 argv[] 传递给 dart 中的 ac 函数?
我想使用 dart FFI 从 dart 调用 ac 函数 test_main(int argc, char *argv[])。但是下面的代码显然不起作用,因为 Dart 字符串中不能有空字符。一个人如何在 dart 中编写 argv?
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 集成的合适文章。