环境准备
首先,必须要有 gcc 工具,windows 下,可以下载 tdm-gcc。
然后,go env
查看环境变量
# 必须开启
set CGO_ENABLED=1
# 表示是64位
set GOARCH=amd64
编写代码
编写 go 代码,有几个注意点:
- 必须在 main 包
- 必须有 main 函数,即使是空的
- 导出的方法,增加注释
// export Add
package main
import "C"
func init() {
// 这个函数可以在初始化的时候做一些事情
}
// export Add
func Add(a int, b int) int {
return a + b
}
func main() {
// 这个函数必须有,但是没啥用
}
然后执行:
-ldflags "-s -w"
,表示将一些调试的符号给删除-buildmode=c-shared
,表示要打包动态链接库-o api64.dll
,表示导出文件
go build -ldflags "-s -w" -buildmode=c-shared -o api64.dll .\api.go
如果要编译 32 位的,可以这样
go env -w GOARCH=386
然后重新打包
go build -ldflags "-s -w" -buildmode=c-shared -o api32.dll .\api.go