我正在尝试使用 Dart 包装一个 C 库。我从 dart 调用一个 C 函数,并通过 C 中的 Dart_NativeArguments 结构传入参数:
void _sayHello(Dart_NativeArguments arguments) {
string from;
Dart_Handle seed_object = HandleError(Dart_GetNativeArgument(arguments, 0));
if (Dart_IsString(seed_object)) {
const char* seed;
HandleError(Dart_StringToCString(seed_object, &seed));
from = seed;
}
num = (int)Dart_GetNativeArgument(arguments, 1);
Dart_SetReturnValue(arguments, HandleError(Dart_NewStringFromCString(sayHello(from, num).c_str())));
}
在 Dart 中,我调用函数并传入必要的参数
String sayHello(String from) native "sayHello";
main() {
print(sayHello("Dart"));
}
我想知道如何传递指针(指向我创建的结构),而不仅仅是字符串和整数作为参数。Dart 中有一些函数可以将 Dart_Handles 转换为字符串和整数,但不能转换为指针。Dart_Handle 的内部结构是什么,我将如何将其转换回指针?例如:
飞镖代码:
String sayHello(info from) native "sayHello";
class info
{
String message;
int num;
}
main() {
info tester = new info();
tester.message = "Dart";
tester.num = 2;
print(sayHello(tester));
}
C代码:
void sayHello(Dart_NativeArguments arguments) {
/*What do I do here to get back a pointe to the struct/class I passed
in as an argument in Dart?*/
}