flutter - ffi Utf8.fromUtf8 在 iOS 上实现 opencv c++ 颤振应用程序时出错
问题描述
我正在使用 opencv 和颤振来构建应用程序。ffi 包用于实现桥接,我从教程代码中得到错误。我找不到任何解决方案。你能帮帮我吗?当 Utf8.fromutf8 和 Utf8.toUtf8 出现错误
import 'dart:ffi' as ffi;
import 'dart:io';
import 'package:ffi/ffi.dart';
// C function signatures
typedef _version_func = ffi.Pointer<Utf8> Function();
typedef _process_image_func = ffi.Void Function(ffi.Pointer<Utf8>, ffi.Pointer<Utf8>);
// Dart function signatures
typedef _VersionFunc = ffi.Pointer<Utf8> Function();
typedef _ProcessImageFunc = void Function(ffi.Pointer<Utf8>, ffi.Pointer<Utf8>);
// Getting a library that holds needed symbols
ffi.DynamicLibrary _lib = Platform.isAndroid
? ffi.DynamicLibrary.open('libnative_opencv.so')
: ffi.DynamicLibrary.process();
// Looking for the functions
final _VersionFunc _version = _lib
.lookup<ffi.NativeFunction<_version_func>>('version')
.asFunction();
final _ProcessImageFunc _processImage = _lib
.lookup<ffi.NativeFunction<_process_image_func>>('process_image')
.asFunction();
String opencvVersion() {
return Utf8.fromUtf8(_version());
}
void processImage(ProcessImageArguments args) {
_processImage(Utf8.toUtf8(args.inputPath), Utf8.toUtf8(args.outputPath));
}
错误
Error: Method not found: 'Utf8.fromUtf8'.
解决方案
本教程中的 FFi 包可能已过时。Dart FFI在类型中有,和,1.1.1
方法。toString()
toDartString()
toNativeUtf8()
Pointer<Utf8>
在这里结帐。
它应该如下所示:
String opencvVersion() {
return _version().toDartString();
}
void processImage(ProcessImageArguments args) {
_processImage(args.inputPath.toNativeUtf8(), args.outputPath.toNativeUtf8());
}
推荐阅读
- input - 如何在 Visual Studio Code 中的 python 交互中修复“StdinNotImplementedError”
- maven - Maven surefire插件v2.18和v2.22.0的区别
- xml - 如何在所有页面中添加动态标题,同时使用 XSL:FO 使用 fop 从 XML 生成 pdf?
- c++ - 使用skia库编译cpp wasm模块时遇到错误
- asynchronous - Vue 延迟加载/异步组件在初始加载时加载
- arrays - 在excel上使用vba进行无重复的Vlookup
- java - Java:将字符串转换为文档(W3C)而不解码数字字符参考
- java - 目标配方失败openjdk1.8
- python - 如何将 matplotlib 图保存为 .png 文件
- cordova - 如何在不使用关闭按钮的情况下关闭 phonegap/cordova InAppBrowser