问题标签 [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 回答
135 浏览

flutter - 找不到“openssl”提供的包配置文件

我正在尝试使用 dart:ffi 将 OpenSSL 与 Flutter 一起使用,但是当我在 Ubuntu 20.04 上运行该项目时,会出现如下错误消息。我在 Windows 10 上测试了这个项目,它工作正常。

项目存储库

CMakeLists.txt

错误

如何在 Ubuntu 上运行该项目?

0 投票
1 回答
176 浏览

flutter - 在 Linux 上编译 Flutter 应用程序时未定义的引用

我构建了一个使用 Dart FFI 和共享库并发布到 pub.dev 的插件。每当我尝试在我的应用程序中使用该插件时,它总是会因找不到文件错误而失败,而且我不知道错误来自哪里。

错误:

我已经分别修改了我的 cmake 文件来解决这个问题并尝试了各种包含方法但无济于事。当前的cmake:

我的发布规范

提供的每个信息都来自我的插件,而不是我尝试构建的颤振应用程序,导致整个问题在我添加该插件时开始

我一直以此为参考。我现在唯一的选择是使用方法通道重建插件,因为这是插件的第一次迭代,但我没有依赖颤振和飞镖 FFI 更容易,需要更少的代码。

更新: 我通过将插件重新生成为添加丢失文件的颤振插件解决了上述错误。现在我有另一个构建错误

generated_plugin_registrant.cc 的内容

size_plugin.h 的内容

generated_plugin_registrant.h 的内容

0 投票
0 回答
59 浏览

c++ - 在飞镖中使用 C++ std::map

我有一个返回的 C++ 函数std::map<MyCustomEnum, std::string>,其中MyCustomEnum是 cpp 文件中定义的枚举。

我想在我的飞镖代码中使用这个 c++ 库并调用这个函数来打印地图值。不确定在这种情况下如何使用 dart:ffi。

编辑:

我的 cpp 代码中有以下内容:

enum ADDRESS{ HOME, WORK, SCHOOL }

typedef std::<ADDRESS, std::string> AddressMap

AddressMap getAddress(AddressMap &map)

我想使用飞镖代码,所以我将能够使用 getAddress 函数。调用此功能后,我想在我的飞镖代码中使用返回的地图值。

0 投票
1 回答
121 浏览

c - 将 Dart 字符串转换为 dartffi 指针

我使用ffigen从 C 头文件生成绑定。C 中的方法之一是open(const char *path),ffigen 生成了一个绑定方法open(ffi.Pointer<ffi.Int8> path)。如果我想要一个open(String path)访问此绑定方法的 dart 方法,如何将 String 参数转换为 ffi.Pointer<ffi.Int8>?

0 投票
0 回答
134 浏览

android - 谁在颤振项目中加载.SO库

我正在尝试在我的项目中链接一个名为 librandomnumber.so 的预编译共享库文件。 CMakeLists.txt 的代码:

加载库代码:

显示此错误

错误:无效参数:无法加载动态库“native-lib.so”:dlopen 失败:未找到库“native-lib.so”

你能给我解决方案吗?

0 投票
1 回答
210 浏览

c - Dart FFI 保持结构指针

我正在尝试从 dart 调用 C 库。C 代码作为生成器方法,例如

然后是接受指向结构的指针的方法,例如:

我已经使用 ffigen 创建了飞镖绑定,并且我有

我的问题是我不知道如何get_infoa_struct. create_struct确实,get_info期望 affi.Pointer<a_struct>但我只生成a_struct没有指针的 a 。由于 dart 已弃用.addressOf,我如何获得ffi.Pointer<a_struct>from create_struct

0 投票
1 回答
203 浏览

flutter - 颤振:飞镖 FFI 找不到符号

我已按照标准Flutter FFI 说明libavcodec.dylib将其包含在 Flutter 项目中。

调用DynamicLibrary.open('libavcodec.59.dylib')执行没有问题,并返回一个非负句柄地址,(我认为)表明加载成功。

当我尝试查找任何符号时,Flutter 会抛出错误:

“[错误:flutter/lib/ui/ui_dart_state.cc(209)] 未处理的异常:无效的参数:无法查找符号...”。

当我providesSymbol()使用各种符号名称调用时,它总是返回false.

有谁知道为什么会发生这种情况?引导这样的库是否需要额外的步骤?如何调试问题的根本原因?

我认为这是根头文件。这是 lib 的文档

0 投票
1 回答
68 浏览

flutter - 如何在 Dart 中将 RGB 像素图转换为 ui.Image?

目前我有一个 Uint8List,格式为 [R,G,B,R,G,B,...] 用于图像的所有像素。当然,我有它的宽度和高度。

decodeImageFromPixels在搜索时发现但它只需要 RGBA/BGRA 格式。我将我的像素图从 RGB 转换为 RGBA,这个函数工作正常。

但是,我的代码现在看起来像这样:

我必须创建一个新列表(浪费空间)并遍历整个列表(浪费时间)。

在我看来这太低效了,有什么办法可以让它更优雅吗?喜欢添加一个新的PixelFormat.rgb888

提前致谢。

0 投票
1 回答
111 浏览

c++ - Dart/Flutter FFI:将列表转换为数组

我有一个从 C++ 库接收浮点类型数组的结构。

我能够接收数据并在 Dart 中解析它。现在我想做相反的事情。我有一个List<double>我想分配给这个结构并传递给 C++ 的。

以下强制转换在运行时失败。

Array 类和 List 类都没有任何相关的方法。对此有任何想法吗?

0 投票
0 回答
54 浏览

flutter - Flutter 无法加载带有错误代码的 DLL

我正在尝试将 dll 导入我的 Windows 应用程序并将其与 ffi 一起使用。我用 ffigen 成功生成了绑定。

但是当我尝试打开 dll 时出现错误: Failed to load dynamic library 'src/avformat-57.dll': error code 1557260104 最后的数字总是不同的,搜索它没有结果。

我使用了 ffmpeg 的头文件和库文件,并从这里获取它们: https ://github.com/delahee/linc_ffmpeg/tree/master/lib/ffmpeg

那就是我尝试导入它们的代码:

所有这些都给我一个看似随机的错误代码的错误。

有谁知道这个问题或知道如何解决它?