【问题标题】:dart: void function for ffidart: ffi 的 void 函数
【发布时间】:2020-09-11 21:22:13
【问题描述】:

我正在尝试通过dart:ffi 从飞镖端调用本机 C/C++ void 函数,

final Void Function(void) funcNativeStart =
nativeGuestLib
    .lookup<NativeFunction<Void Function(void)>>("NativeStart")
    .asFunction();

这给了我编译器错误

The type 'Void Function(void)' must be a subtype of 'Void Function(void)' for 'asFunction'

我玩过一些编辑,例如

final Void Function() funcNativeStart =
nativeGuestLib
    .lookup<NativeFunction<Void Function()>>("NativeStart")
    .asFunction();
final Void Function(Void) funcNativeStart =
nativeGuestLib
    .lookup<NativeFunction<Void Function(Void)>>("NativeStart")
    .asFunction();

但结果都与我在第一个版本中得到的结果相似。

如何解决这个问题?

【问题讨论】:

    标签: c++ flutter dart ffi


    【解决方案1】:

    自己解决了。

    工作版本应该是

    final void Function() funcNativeStart =
    nativeGuestLib
        .lookup<NativeFunction<Void Function()>>("NativeStart")
        .asFunction();
    

    我们的想法是,由于我们正在将原生类型“翻译”成 Dart(方程式从右到左),我们应该在等式左侧使用 Dart 语言类型,在等式左侧使用 FFI 原生类型右侧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多