Yefei.Blog

个人日记 WIKI

用户工具


GO编译成C风格的动态库

Go 语言也可以像 C 语言那样编译成动态链接库(.so .dll) 文件供给其他程序调用。

先编写可导出的 Go 程序

package main
 
import "C" // 导入 C 兼容包
 
// 使用魔注释 export <name> 导出函数。需要导出的函数开头必须大写
//export Add
func Add(x, y int) int {
    return x + y
}
 
func main() {} // main 包中必须包含 main 函数

将文件保存到 $GOPATH/testadd/main.go 中,执行编译命令

go build -o libtestadd.so -buildmode=c-shared testadd

使用其他程序语言调用测试,例如 Python 的 ctypes

import ctypes
lib = ctypes.CDLL("libtestadd.so")
lib.Add(10, 5)  # 返回 15

皖ICP备15000265号

皖公网安备 34110302000106号