tx.go 718 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package x
  2. /*
  3. #include "tx.h"
  4. void cb(); // C99定义,通过 C. 使用,不能有参数和返回值
  5. */
  6. import "C"
  7. import (
  8. "log"
  9. "os"
  10. "unsafe"
  11. "github.com/spf13/cast"
  12. )
  13. // go 实现导出C99,在 .c 中使用
  14. //export cb
  15. func cb() {
  16. log.Println("run callback")
  17. }
  18. //export goputs
  19. func goputs(s string) int {
  20. log.Println("go:", s)
  21. return 0
  22. }
  23. func init() {
  24. log.SetOutput(os.Stdout)
  25. log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds)
  26. }
  27. func run() {
  28. log.Println("run begin")
  29. log.Println("getNumber", cast.ToString(int(C.getNumber())))
  30. log.Println("getString", cast.ToString(C.GoString(C.getString())))
  31. C.callback((C.f_ptr)(unsafe.Pointer(C.cb)))
  32. log.Println("run end")
  33. }
  34. func Run() {
  35. run()
  36. }