赞
踩
在实际工作中,我们可能会出现跨部门之间协助,假如某部门给你提供一个c写的so,让你们自己去调用
#include <stdio.h>
void SayHello(const char* s) {
puts(s);
}
[~]# gcc -shared -o libhello.so hello.c
[~]# go get github.com/rainycape/dl
package main import "C" import "github.com/rainycape/dl" func main() { lib, err := dl.Open("./libhello.so", 0) if err != nil { panic(err) } defer lib.Close() var SayHello func(src *C.char) // 定义函数变量匹配 libhello 中的 SayHello 函数 lib.Sym("SayHello", &SayHello) // 定位 SayHello 函数地址 SayHello(C.CString("hello world")) }
[~]# go run main.go
hello world
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。