如何使用Go生成DLL或SO文件

silverwq
2023-12-24 / 0 评论 / 128 阅读 / 正在检测是否收录...

环境准备

首先,必须要有 gcc 工具,windows 下,可以下载 tdm-gcc。

然后,go env 查看环境变量

# 必须开启
set CGO_ENABLED=1
# 表示是64位
set GOARCH=amd64

编写代码

编写 go 代码,有几个注意点:

  1. 必须在 main 包
  2. 必须有 main 函数,即使是空的
  3. 导出的方法,增加注释 // export Add
package main

import "C"

func init() {
    // 这个函数可以在初始化的时候做一些事情
}

// export Add
func Add(a int, b int) int {
    return a + b
}

func main() {
    // 这个函数必须有,但是没啥用
}

然后执行:

  1. -ldflags "-s -w",表示将一些调试的符号给删除
  2. -buildmode=c-shared,表示要打包动态链接库
  3. -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
0

评论 (0)

取消