C 语言如何调用 Go 编写的 lib(.so)
要让C语言调用Go编写的库,需要遵循以下步骤:
在Go中创建一个动态链接库(.so
文件)。
在C语言中,包含Go库的头文件,然后就可以调用Go库中的函数了。
下面是一个简单的示例:
在Go中的代码(mylib.go
):
package main
import "C"
//export Add
func Add(a, b int) int {
return a + b
}
func main() {}
在C语言中的代码(main.c
):
#include <stdio.h>
extern int Add(int a, int b);
int main() {
int result = Add(3, 5);
printf("Result: %d\n", result);
return 0;
}
编译Go库:
go build -o libmylib.so -buildmode=c-shared mylib.go
# 此时会生成 `libmylib.so` 和 `libmylib.h` 两个文件
编译C代码并链接Go库:
gcc -o main main.c ./libmylib.so
在这里,指定要链接的库名为 libmylib.so
。
然后运行可执行文件 ./main
,就能看到调用Go库的结果。
请根据你的具体情况进行相应的调整,这只是一个简单示例。在实际项目中可能需要处理更多的细节。