1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 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()
- }
|