dart:ffi 的 void 函数
dart: void function for ffi
我正在尝试通过 dart:ffi
、
调用本地 C/C++ void 函数形式的 dart 端
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();
但结果都与我在第一个版本中得到的结果相似。
如何解决这个问题?
自己解决了。
工作版本应该是
final void Function() funcNativeStart =
nativeGuestLib
.lookup<NativeFunction<Void Function()>>("NativeStart")
.asFunction();
想法是,由于我们是 "translating" Dart 的原生类型(对于等式从右到左),我们应该使用等式左侧的 Dart 语言类型,以及 FFI右侧的本机类型。
我正在尝试通过 dart:ffi
、
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();
但结果都与我在第一个版本中得到的结果相似。
如何解决这个问题?
自己解决了。
工作版本应该是
final void Function() funcNativeStart =
nativeGuestLib
.lookup<NativeFunction<Void Function()>>("NativeStart")
.asFunction();
想法是,由于我们是 "translating" Dart 的原生类型(对于等式从右到左),我们应该使用等式左侧的 Dart 语言类型,以及 FFI右侧的本机类型。