问题标签 [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 投票
8 回答
19179 浏览

flutter - 错误:没有为类“Utf8”定义吸气剂“addressOf”

需求文件截图

/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-0.1.3/lib/src/utf8.dart:63:33:错误:未定义getter'addressOf'对于“Utf8”类。

'Utf8' 来自'package:ffi/src/utf8.dart' ('/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-0.1.3/lib/src/utf8 。镖')。尝试将名称更正为现有 getter 的名称,或定义一个名为“addressOf”的 getter 或字段。字符串 toString() => fromUtf8(addressOf); ^^^^^^^^^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_svg-0.18.1/lib/src/picture_provider.dart:50:59:错误:没有名为“nullOk”的命名参数。上下文!=空?Localizations.localeOf(context, nullOk: true) : null, ^^^^^^ /C:/src/flutter/packages/flutter/lib/src/widgets/localizations.dart:413:17: Context: 找到这个候选人,但论点不匹配。static Locale localeOf(BuildContext context) { ^^^^^^^^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-0.0.

'GUID' 来自 'package:win32/src/structs.dart' ('/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/src /structs.dart')。尝试将名称更正为现有 getter 的名称,或定义一个名为“addressOf”的 getter 或字段。knownFolderID.addressOf, KF_FLAG_DEFAULT, NULL, pathPtrPtr); ^^^^^^^^^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/src/structs.dart:1067:7:错误:没有为类 'LOGFONT' 定义 getter 'addressOf'。

'LOGFONT' 来自 'package:win32/src/structs.dart' ('/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/src /structs.dart')。尝试将名称更正为现有 getter 的名称,或定义一个名为“addressOf”的 getter 或字段。addressOf.cast().elementAt(28).cast(); ^^^^^^^^^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/src/structs.dart:1112:29:错误:没有为类 'ENUMLOGFONTEX' 定义 getter 'addressOf'。

'ENUMLOGFONTEX' 来自 'package:win32/src/structs.dart' ('/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/src /structs.dart')。尝试将名称更正为现有 getter 的名称,或定义一个名为“addressOf”的 getter 或字段。LOGFONT 得到 elfLogFont => addressOf.cast().ref; ^^^^^^^^^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/src/structs.dart:1114:29:错误:没有为类 'ENUMLOGFONTEX' 定义 getter 'addressOf'。

'ENUMLOGFONTEX' 来自 'package:win32/src/structs.dart' ('/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.4+1/lib/src /structs.dart')。尝试将名称更正为现有 getter 的名称,或定义一个名为“addressOf”的 getter 或字段。String get elfFullName => addressOf ^^^^^^^^^

FAILURE:构建失败并出现异常。

  • 其中:脚本 'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:1035

  • 出了什么问题:任务“:app:compileFlutterBuildDebug”执行失败。Process 'command 'C:\src\flutter\bin\flutter.bat'' 以非零退出值 1 结束

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 在https://help.gradle.org获得更多帮助

BUILD FAILED in 1m 6s 异常:Gradle 任务 assembleDebug 失败,退出代码为 1

0 投票
1 回答
212 浏览

c - 为什么 Dart FFI 会从这个 C 结构中生成一个不透明的类?

我想使用MAVLink C 库来解析 dart 中的 MAVLink 数据包,但是 Dart FFI 生成的 mavlink_message_t 是一个不透明的类,而像 mavlink_system_t 这样的其他结构通常是用它们的所有属性生成的。这种行为的原因是什么,我该如何解决?

mavlink_message_t C 结构

mavlink_system_t C 结构

FFI 生成的 Dart 类

0 投票
1 回答
484 浏览

dart - 使用 dart ffi 类型安全内存分配

在为 ffi 分配内存时,我试图让我的代码更加健壮。

我写了以下函数:

要调用上述函数,我使用:

这可行,但正如您所见,我需要通过两次 Uint32 以及sizeOf.

我真正想写的是:

问题是您不能将泛型类型传递给错误callocsizeOf没有错误:

[...] 的类型参数必须是编译时常量,但类型参数不是常量。尝试将类型参数更改为常量类型。

有没有办法解决这个问题?

0 投票
1 回答
438 浏览

flutter - ffi Utf8.fromUtf8 在 iOS 上实现 opencv c++ 颤振应用程序时出错

我正在使用 opencv 和颤振来构建应用程序。ffi 包用于实现桥接,我从教程代码中得到错误。我找不到任何解决方案。你能帮帮我吗?当 Utf8.fromutf8 和 Utf8.toUtf8 出现错误

错误

0 投票
1 回答
438 浏览

dart - 飞镖 FFI 中“char *”的“本机类型”是什么?

我有这样的功能C

现在我想通过FFIin调用它dart,这是我的代码:

我想知道我应该放什么而不是HERE!!!原生类型?

0 投票
1 回答
254 浏览

c++ - 如何从 dart 中的函数指针访问结果

我正在尝试从 dart 中的 c++ 函数获取返回值。

我的 C++ 代码是这样的

从 dart 中,我用这个本机代码加载了共享库,我正在尝试调用该is_alive()函数。

然后我调用了isAliveFuncfrom dart,我想要那个函数的结果。我尝试了所有这些方法。这些都不起作用。

我得到这样的结果 Pointer<Int8>: address=0x1

如何从 dart 中的此指针中获取值?我希望得到 1 或 0 作为结果。

0 投票
1 回答
457 浏览

flutter - 如何将字符串列表传递给C In dart ffi

我正在学习如何使用 dart ffi。

我没有太多的C经验或知识。

我正在尝试从 C 库中调用一个函数(小文件对话框)。

我可以调用其他函数但是我不能调用这个函数

主要问题是我不明白什么

char const* const * a FilterProperties, / *Null or {"*.jpg", "*.png"} */

方法。

据我所知,C函数要求一个字符串数组。argaNumberOfFilterPatterns定义数组的长度。

如果是这种情况,我该如何准备 dart 中的数组以将其传递给 C?

0 投票
0 回答
197 浏览

flutter - Cmake 编译失败找不到 python.h (Flutter, dart:ffi)

我需要将使用 Python 的 .C/.CPP 代码连接到 Flutter 应用程序。幸运的是,我可以使用 dart:ffi。因此,但是当我尝试编译 apk 时,出现以下错误:

起初我的 CMakeLists.txt 文件看起来像这样:

所以我编辑它以找到 Python 并确保他确实找到了它以及我安装的开发版本

现在 cmake .打印:

太好了,现在 Cmake 知道 python 在哪里,但在尝试创建 apk 时仍然返回相同的错误。我也尝试使用 -I 标志包含编译器的 include/python3.8 路径,但这导致了许多不同的问题,这些问题使我强制使用外部路径,这些路径感觉不对,最终没有解决方案。

我将项目添加到 github,所以你们也可以看看它: https ://github.com/Eidantz/Flutter_python_c

您可以weather.c在 /src 文件夹中找到我尝试过的另一个 .C 文件。CMakeLists.txt 当然在 /android/app 文件夹中

提前谢谢各位!

0 投票
0 回答
325 浏览

c++ - 颤振,从c ++ opencv获取图像作为数据

我对 Flutter 和 C++ 真的很陌生。所以我正在努力解决这个问题。我想通过 ffi->c++ (opencv) 对图像进行一些转换。这是我在 Flutter 方面的代码:

我基本上接受了从 C++ 端返回的指针。然后我像这样调用 C++ 本机函数:

在 C++ 方面,在process_image函数中我使用以下内容:

基本上,我通过 ffi 包将图像路径从 Flutter 发送到 C++。并在 C++ 中从该文件中获取图像并创建 opencv Mat 变量dst,它将保存新的转换图像。然后我将此 Mat 变量转换为uchar * arr,我将其返回到 Flutter(指向 arr 的指针)。但是在 Flutter 中,我无法将其转换回图像数据(例如 Uint8List)。

我见过人们使用cv::imwrite(path, dst);将转换直接保存到同一个文件。但对我来说,我想保留原始文件,只想将新图像作为数据返回 Flutter 并通过MemoryImage(...Uint8List variable...).

如何从 C++ 将图像数据发送回 Flutter?最后,我想拥有一个Uint8List. 这uchar * arr甚至是一个不错的选择吗?

我尝试了以下方法,但它给了我一个invalid image data错误:

0 投票
0 回答
158 浏览

flutter - 如何在颤振构建窗口中包含 dll

我正在开发一个在开发中运行良好的颤振项目。但是我不知道如何让构建包含使用 FFI 引用的 dll。

我找不到有关如何执行此操作的明确说明。

我尝试按照步骤在这里构建一个 msix ,它有效但似乎没有包含 dll(它的失败方式与常规构建相同)

让构建过程考虑 dll 的程序是什么?

其他 dll 出现在来自 3rd 方包的构建目录中,所以一定有办法吗?