package x /* #include "tx.h" void cb(); // C99定义,通过 C. 使用,不能有参数和返回值 */ import "C" import ( "log" "os" "unsafe" "github.com/spf13/cast" ) // go 实现导出C99,在 .c 中使用 //export cb func cb() { log.Println("run callback") } //export goputs func goputs(s string) int { log.Println("go:", s) return 0 } func init() { log.SetOutput(os.Stdout) log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds) } func run() { log.Println("run begin") log.Println("getNumber", cast.ToString(int(C.getNumber()))) log.Println("getString", cast.ToString(C.GoString(C.getString()))) C.callback((C.f_ptr)(unsafe.Pointer(C.cb))) log.Println("run end") } func Run() { run() }