为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 Go 函数作为参数传递给 C 函数?

如何将 Go 函数作为参数传递给 C 函数?

Go
慕雪6442864 2023-07-10 15:12:42
我正在尝试将 Go 函数传递给 C 函数。就像是:stm := C.struct_tray_menu{    ....    fn: // definition of method    ....}C.menu_cb(stm);并将其传递给 C 函数:static void menu_cb(struct tray_menu *item) {  (void)item;  printf("menu: clicked on %s\n", item->text);}我只是想知道如何定义像 C.function 这样的东西。
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

主要问题是对c中go的定义的误解。所以最终的代码看起来像



//export callOnMeGo

func callOnMeGo(in int) int {

    fmt.Printf("Go.callOnMeGo(): called with arg = %d\n", in)

    return  in+ 1

}


func main() {


    C.some_c_func((C.callback_fcn)(unsafe.Pointer(C.callOnMeGo_cgo)))

    //dont forget to use (funcDefinedInGO_cgo) for with postfix _cgo


...


查看完整回答
反对 回复 2023-07-10
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信