c语言调用go函数,C中调用go中的回调函数
在用go包裝某些c庫時(如glut),需要將go函數(shù)當作回調函數(shù)傳遞給c庫(如glutDisplayFunc(&draw)中的draw函數(shù),我想將go寫的函數(shù)傳過去),應該怎么做?我寫了一個示例,但一直不成功,不知道為什么?麻煩知道的幫我解答一下。 代碼如下:
/* test.h */
extern void SetFunc();
/* test.c */
#include "test.h"
#include "_cgo_export.h"
void SetFunc() { InternalFunc(); }
/* test.go */
package main
// #include "test.h"
import "C"
import "fmt"
var function func()
//export InternalFunc
func InternalFunc() { function() }
func Register(fnct func()) {
function = fnct
C.SetFunc()
}
func test() { fmt.Println("How should I do it") }
func main() { Register(test) }
///
go run test.go后出現(xiàn)以下錯誤:
/tmp/go-build592126733/command-line-arguments/_obj/test.cgo2.o: In function `_cgo_be6c2798e9b7_Cfunc_SetFunc':
/home/shikuijie/桌面/Work/Code/src/test.go:32: undefined reference to `SetFunc' collect2: ld 返回 1
總結
以上是生活随笔為你收集整理的c语言调用go函数,C中调用go中的回调函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs code linux opencv
- 下一篇: 西宁获批建设国家级互联网骨干直联点