开发者社区> 问答> 正文

在Dart中,如何定义与C/C++中pong函数指针相匹配的Dart函数,并将其作为回调传递给C/C

在Dart中,如何定义与C/C++中pong函数指针相匹配的Dart函数,并将其作为回调传递给C/C++的ping方法?

展开
收起
不吃核桃 2024-08-28 08:12:08 24 0
1 条回答
写回答
取消 提交回答
  • 需要定义一个与C/C++中pong函数指针相匹配的Dart函数。由于pong函数不接受参数且不返回任何值,Dart中的函数也应该如此。然后,你可以使用ffigen生成的绑定来调用C/C++的ping方法,并将Dart函数作为回调传递。但是,请注意,Dart中的顶级函数(Top-level functions)才能被用作FFI回调。例如:

    dart
        // Dart中的pong函数 
        void pong() { 
        print("pong"); 
        } 
    
        // 调用C/C++的ping方法,并传递pong作为回调 
        void ping() { 
        _bindings.ping(Pointer.fromFunction<Void Function()>(pong, 'pong')); 
        }
    

    注意:在上面的Dart代码中,_bindings.ping是假设的ffigen生成的绑定方法,而Pointer.fromFunction用于将Dart函数转换为C/C++可以调用的函数指针。第二个参数'pong'是可选的,用于调试目的,指定Dart函数的名称。

    2024-08-28 19:31:42
    赞同 61 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载