Yefei.Blog

个人日记 WIKI

用户工具

站点工具


go:building-c-style-shared-libraries

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
go/building-c-style-shared-libraries.txt · 最后更改: 2017/02/13 11:09 由 yefei