Golang生成C/C++可调用的动态库.so和静态库
Golang类似于C的静态语言,效率也接近于C,如果Golang也可以导出可供C调用的库,那可以和很多高级语言say goodbye了,goodbye似乎又有点武断,但至少说,Golang可以做很多事,而且效率优于很多高级语言,这样说应该没有问题。 接下来,就从三个方面分别来介绍Golang中关于库的使用。
Golang类似于C的静态语言,效率也接近于C,如果Golang也可以导出可供C调用的库,那可以和很多高级语言say goodbye了,goodbye似乎又有点武断,但至少说,Golang可以做很多事,而且效率优于很多高级语言,这样说应该没有问题。 接下来,就从三个方面分别来介绍Golang中关于库的使用。
Golang与C的关系非常密切,下面主要介绍在Golang中使用C。
1 package main
2 //#include <stdio.h>
3 //#include <stdlib.h>
4 /*
5 void Hello(char *str) {
6 printf("%s\n", str);
7 }
8 */
9 import "C" //假设把C当成包,其实有点类似C++的名字空间
10 import "unsafe" //C指针的使用,在C代码中申请的空间,GC垃圾回收机制不会管理,所以需要自己手动free申请的空间
11 func main() {
12 s := "Hello Cgo"
13 cs := C.CString(s)
14 C.Hello(cs)
15 C.free(unsafe.Pointer(cs))
16 }
3,4行的注释也可以写/* */形式 第4行与第5行之间不能有空行,同样第9行与第10行之间也不 能有行,否则编译时cgo会报错: