站在巨人的肩膀上写代码
c/c++ 作为老大哥,积累了很多优秀的库。Go 语言提供了 CGO 工具支持 C 语言函数调用,同时也可以将 Go 语言导出 C 动态库给其他语言使用。
-
Go 语言如何导出 C 语言动态库
-
CGO 在使用 C /C++ 资源的时候一般有三种形式:直接使用源码;链接静态库;链接动态库
-
编译和链接参数
这里只做简单的介绍,有兴趣可以深入研究~
1. 调用 C 语言库
以经典的 hello world 为例
package main
//#include <stdio.h>
import "C"
func main() {C.puts(C.CString("Hello, World\n"))
}
2. 嵌入 C 语言函数
package main
/*
#include <stdio.h>
void printint(int v) {printf("printint: %d\n", v);
}
*/
import "C"
func main() {
v := 42
C.printint(C.int(v))
}
package main
/*
#include <errno.h>
static int div(int a, int b) {if (b==0)
{
errno = EINVAL;
return 0;
}
return a/b;
}
*/
import "C"
import "fmt"
func main() {v0, err0 := C.div(2, 1)
fmt.Println(v0, err0)
v1, err1 := C.div(2, 0)
fmt.Println(v1, err1)
}
正文完