经历了数十年发展的C语言,各种各样的现成的库已经非常丰富。通过cgo,可以在Go语言中使用C语言代码,充分利用好现有的“轮子”。
本文所有代码,在下述环境中调试通过:
Windows 8.1 64-bit
Go 1.3.3 64-bit
GCC 4.8.1 64-bit
要想使用cgo,要导入C“包”:
import "C"
这行代码的上方要紧挨着连续的若干行的注释,在这些注释中编写C代码。例如:
/*
int PlusOne(int n)
{
return n + 1;
}
*/
import "C"
我们知道,如果要引用一个包中的符号,需要用“包名.符号名”的方式,C“包”也是这样,例如:C.int、C.GetWindowLongPtr。
下面介绍使用C语言变量、函数、结构体、联合体、回调函数和动态链接库(Dynamic Link Library,dll)的方法。
变量
函数
结构体
联合体
回调函数
dll1. 变量
使用C的变量很简单,比方说,要使用int,只要在Go代码中写C.int就可以了。
package main
import (
"fmt"
)
import "C"
func main() {
var