你好,我正在使用dart:ffi构建与我的本地c/c++库的接口,需要一种从c到dart的回调方式,例如在sqlite中:
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
sqlite3_exec
中的第三个参数是一个回调函数的函数指针。
因此,如果我使用 ffi
在 dart 中调用这个函数,我需要传递一个函数指针:而在dart:ffi
的 Pointer
类中,有一个名为fromFunction
的函数,它接受一个dart静态函数和一个exceptionalReturn
; 但仅仅通过调用此函数来获取dart管理的函数的函数指针时:会引发一个(sigterm)
,并且dart代码在进程中不再工作。所以我的问题是:是否有办法在dart中获得一个本地回调,如Python、C#等?
附加信息: 在flutter项目中是否有一种方法可以包含
dartino
,因为这个ForeignDartFunction包含了我需要的内容。
Pointer.fromFunction
吗?https://api.dart.dev/stable/2.8.1/dart-ffi/Pointer/fromFunction.html - julemand101fromFunction
的示例。 - Ala'a Al Hallaq