golang编译so动态库加载失败

Python011

golang编译so动态库加载失败,第1张

Golang编译so动态库加载失败的原因可能有很多,首先,检查动态库文件是否正确安装,其次,检查编译选项是否正确,比如-shared参数是否被正确设置,最后,追踪运行时出现的导致加载失败的错误,可能是某个符号没有被找到或者版本不匹配等情况。

可以尝试使用其他编译工具。根据查询相关公开信息显示,你可以使用来编译Androidso库,并将它们链接到Go语言代码,但是,有时在使用Go编译Androidso库时会遇到引用问题,为了解决这个问题,你可以尝试使用其他编译工具,例如Clang或其他编译器。

测试动态库步骤:

1、test_so.h

2、test_so.c

3、生成so

4、复制so文件到Go项目目录

Go项目目录

1、load_so.h

2、load_so.c

3、test.go

4、Go项目目录要放在$GOPATH/src/目录下,这也是正常操作。

test目录为Go项目,里边是上述创建的所有源码文件。

在$GOPATH/src/test/里直接使用gobuild编译生成test二进制文件,此处需要注意执行路径。

问题

1、/**/注释的代码下一行一定是import“C”,中间不能有空行

2、importC必须单独一行,不能和其它库一起导入

3、有人编译的时候会报错:

这个主要是执行目录问题,一定要在$GOPATH/src/项目/目录下,用gobuild执行,gobuild后边不要有任何文件名。

或者用gorun.运行,或者goruntest,test是项目名。不能用goruntest.go。

4、还有人报这个错:test.go文件里的cgoLDFLAGS:-ldl这一行不要删掉。