golang编译so动态库加载失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang编译so动态库加载失败相关的知识,希望对你有一定的参考价值。
Golang编译so动态库加载失败的原因可能有很多,首先,检查动态库文件是否正确安装,其次,检查编译选项是否正确,比如-shared参数是否被正确设置,最后,追踪运行时出现的导致加载失败的错误,可能是某个符号没有被找到或者版本不匹配等情况。 参考技术A 这很可能是因为某些具体问题出现了问题,例如动态库没有正确地安装或者编译程序中存在一些语法错误。建议检查程序的原始代码并进行调试,以帮助找出可能的问题原因,并根据错误信息进行调整。golang 调用 c++动态库(winlinux环境)
在生产时,经常会使用golang调用已有的c++库,以下分别演示在linux 跟 windows开发环境下怎样加载动态库。
linux下的动态库为.so文件、win动态库为.dll文件
test.cpp 生成 test.so(linux)、 test.dll(win)
#ifdef _WINDOWS
#else
#define WINAPI
extern "C" WINAPI int testFunc() {
return 0;
}
linux开发环境
demo.go
package main
import "C"
func main() {
C.int res = C.testFunc()
}
Windows开发环境
package main
func main() {
h := syscall.MustLoadDLL("test.dll")
res := h.MustFindProc("testFunc").Call()
}
以上是关于golang编译so动态库加载失败的主要内容,如果未能解决你的问题,请参考以下文章