Linux下go语言调用C语言动态库 xxx.so (带DEMO)

本文介绍了如何在Linux环境下,使用Go语言的cgo来调用C语言编写的动态库xxx.so。通过一个DEMO展示了从环境配置、动态库编译到Go代码调用的全过程,详细解析了C语言和Go语言中变量的对应关系,并提供了cgo的转换函数使用注意事项。
摘要由CSDN通过智能技术生成

Linux下调用xxx.so动态库

go 项目中有时会以来与C语言的动态库,因此需要在go语言中封装C语言的接口。

Linux下cgo刚好满足此需求,因此可以使用cgo调用xxx.so库。

本文的编译环境为:Centos7,go1.14.4  gcc-4.8.3-9 

源代码位置https://download.csdn.net/download/ok532655221/12517746

源代码结构

inc  头文件路径

src  源代码路径

test  测试程序路径,包括c语言测试程序和go语言测试程序

1 、使用源代码之前请先配置好所有环境头文件

2、编译 make -f makefile 生成可执行文件(如果环境完全相同可以不编译)

注意:

报错 ./test: error while loading shared libraries: libVeSdkAli.so: cannot open shared object file: No such file or directory 是由于缺少配置环境变量配置,

需要手动在test目录执行

export LD_LIBRARY_PATH={LD_LIBRARY_PATH}:./

3、GO语言调用

package main
 
//
// 引用的C头文件需要在注释中声明,紧接着注释需要有import "C",且这一行和注释之间不能有空格
//
 
/*
//包含header的目录
#cgo CFLAGS: -I .
//动态库编译方式
#cgo LDFLAGS: -L./ -lVeSdkAli -Wl,-rpath=./
#include "vesdk.h"
*/
import "C"
 
 
import (
        "fmt"
        "unsafe"
)

 
func main() {

        fmt.Println("====

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值