kak*_*kyo 3 c++ ffi dart flutter
我试图通过 dart 端调用本机 C/C++ void 函数dart:ffi,
final Void Function(void) funcNativeStart =
nativeGuestLib
.lookup<NativeFunction<Void Function(void)>>("NativeStart")
.asFunction();
Run Code Online (Sandbox Code Playgroud)
这给了我编译器错误
The type 'Void Function(void)' must be a subtype of 'Void Function(void)' for 'asFunction'
Run Code Online (Sandbox Code Playgroud)
我尝试过一些编辑,例如
The type 'Void Function(void)' must be a subtype of 'Void Function(void)' for 'asFunction'
Run Code Online (Sandbox Code Playgroud)
final Void Function() funcNativeStart =
nativeGuestLib
.lookup<NativeFunction<Void Function()>>("NativeStart")
.asFunction();
Run Code Online (Sandbox Code Playgroud)
但结果与我在第一个版本中得到的结果相似。
如何解决这个问题?
我自己解决了。
工作版本应该是
final void Function() funcNativeStart =
nativeGuestLib
.lookup<NativeFunction<Void Function()>>("NativeStart")
.asFunction();
Run Code Online (Sandbox Code Playgroud)
这个想法是,由于我们将原生类型“翻译”为 Dart(从右到左,对于等式),我们应该在等式左侧使用 Dart 语言类型,在右侧使用 FFI 原生类型。