Go共享库无法重载至最新版本的问题求助
Go共享库无法重载至最新版本的问题求助
各位Go开发的大佬们好!最近在做共享库开发的时候卡壳好几天了,实在没辙来求助大家😭。
情况是这样的:我写了一个Go的共享库,代码如下:
package main /* #include <stdlib.h> #include <stdio.h> */ import "C" import ( "fmt" ) func init() { fmt.Printf("[PLUGIN] Loaded go plugin") } func GetMessage() *C.char { msg := fmt.Sprintf("Hello from go plugin v1!") return C.CString(msg) } func main() {}
然后我用下面的bash脚本构建这个共享库(原脚本没写完,我补充了完整的构建命令):
#!/bin/bash go build -buildmode=c-shared -o plugin.so plugin.go
问题来了:每次我修改GetMessage里的内容(比如把v1改成v2),重新运行脚本生成新的plugin.so之后,在调用这个共享库的程序里重载它,输出的却还是旧版本的消息!我试过手动删除旧的so文件再构建,也试过重启调用的主程序,但偶尔还是会出现加载不到最新版本的情况。
有没有大佬遇到过类似的问题?或者能指点下我哪里可能没做对吗?比如Go构建共享库的时候有没有什么缓存机制没清?还是重载共享库的时候有什么需要注意的点?
内容来源于stack exchange
相关产品推荐
相关产品推荐

