前端之家收集整理的这篇文章主要介绍了
Golang1.7使用CGO在Go代码中定义C函数,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- test.h文件内容:
- int test(void* fn);
- void println(char* str);
- void callback(void* fn);
- test.c文件内容:
- #include <test.h>
- int test(void* fn) { callback(fn); println("Hello,This from Clang");
- return 0;
- }
- main.go文件代码:
- package main
-
- import (
- "fmt"
- "unsafe"
- )
-
- import "C"
-
-
- func println(str *C.char) {
- fmt.Println(C.GoString(str))
- }
-
- func callback(ptr unsafe.Pointer) {
- f := *(*func(str *C.char))(ptr)
- f(C.CString("Hello,This from Golang"))
- }
-
- func main() {
- var fn = println
- C.test(unsafe.Pointer(&fn))
- }