# golang-so-example
golang 编译成动态库 so, C 语言调用例子
仅在 linux 环境下测试
# 编写 go 文件
// path: so/so.go
package main
import "C"
//export add
func add(a, b int) int {
return a + b
}
func main() {
}
# 编译成动态库 so.so
cd so
go build -x -v -ldflags "-s -w" -buildmode=c-shared -o so.so so.go
在 so 文件夹下生成了 so.h, so.so
# 编写 C 文件
// path: ./main.c
#include<stdio.h>
#include"./so/so.h"
int main(){
int sum = 0;
sum = add(2, 3);
printf("%d\n", sum);
return 0;
}
# 编译 C 文件
gcc main.c -L ./ so/so.so -o goso
# 运行
./goso
// output
// 5
# 源码
← gin golang plugin 示例 →