dart FFI 中 'char*' 的 'Native Type' 是什么?
What is 'Native Type' for 'char*' in dart FFI?
我在C
中有这样的功能:
char* getString() {
return "SOME_STRING";
}
现在我想在 dart
中通过 FFI
调用它,这是我的代码:
import 'dart:io';
import 'dart:ffi';
void main(List<String> arguments) {
print('${getString()}');
}
final DynamicLibrary nativeAppTokenLib = Platform.isAndroid
? DynamicLibrary.open('lib_native_get_string.so')
: DynamicLibrary.process();
final String Function() getString = nativeAppTokenLib
.lookup<NativeFunction<HERE!!! Function()>>('getString')
.asFunction();
我想知道我应该用什么代替 HERE!!!
作为原生类型?
尝试:
import 'dart:ffi';
import 'dart:io';
import "package:ffi/ffi.dart";
...
final Pointer<Utf8> Function() _getString = nativeAppTokenLib
.lookup<NativeFunction<Pointer<Utf8> Function()>>('getString')
.asFunction();
String getString() => _getString().toDartString();
这在 Pointer<Utf8>
上使用 package:ffi
's Utf8
type to represent characters. The toDartString 扩展方法是将它们转换为字符串的预期方法。
我在C
中有这样的功能:
char* getString() {
return "SOME_STRING";
}
现在我想在 dart
中通过 FFI
调用它,这是我的代码:
import 'dart:io';
import 'dart:ffi';
void main(List<String> arguments) {
print('${getString()}');
}
final DynamicLibrary nativeAppTokenLib = Platform.isAndroid
? DynamicLibrary.open('lib_native_get_string.so')
: DynamicLibrary.process();
final String Function() getString = nativeAppTokenLib
.lookup<NativeFunction<HERE!!! Function()>>('getString')
.asFunction();
我想知道我应该用什么代替 HERE!!!
作为原生类型?
尝试:
import 'dart:ffi';
import 'dart:io';
import "package:ffi/ffi.dart";
...
final Pointer<Utf8> Function() _getString = nativeAppTokenLib
.lookup<NativeFunction<Pointer<Utf8> Function()>>('getString')
.asFunction();
String getString() => _getString().toDartString();
这在 Pointer<Utf8>
上使用 package:ffi
's Utf8
type to represent characters. The toDartString 扩展方法是将它们转换为字符串的预期方法。