go程序编译成动态库,使用c进行调用

以下是使用 Go 语言打包成 .so 库并使用 C 语言调用的完整步骤:

1. Go 语言打包成 .so

(1)编写 Go 代码

创建一个 Go 文件(如 calculator.go),并定义需要导出的函数。导出的函数名必须以大写字母开头,并在函数前添加 //export 注释。

package main

import "C"
import "fmt"

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

func main() {}
(2)编译生成 .so

在终端中进入项目目录,运行以下命令:

go build -buildmode=c-shared -o libcalculator.so calculator.go

这将生成 libcalculator.so 文件,即打包好的动态链接库。

2. 使用 C 语言调用 .so

(1)编写 C 代码

创建一个 C 文件(如 main.c),并包含生成的头文件(calculator.h),调用导出的函数。

#include "calculator.h"

int main() {
    int result = Add(10, 20);
    printf("Result: %d\n", result);
    return 0;
}
(2)编译和运行

在终端中运行以下命令:

gcc -o main main.c libcalculator.so
./main

运行结果应为:

Result: 30

注意事项

  1. 头文件:生成的 .so 库会附带一个对应的头文件(如 calculator.h),C 代码需要包含这个头文件。
  2. 路径问题:确保 .so 库文件的路径正确,或者将其路径添加到系统的 LD_LIBRARY_PATH 环境变量。
  3. 数据类型:Go 和 C 的数据类型需要匹配,例如 Go 的 int 对应 C 的 int

通过以上步骤,你可以将 Go 语言的功能封装为 .so 库,并在 C 语言中调用这些功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绛洞花主敏明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值