golang调用动态库
来源:互联网 发布:杭州最帅交警网络走红 编辑:程序博客网 时间:2024/06/03 19:05
测试动态库
test_so.h
int test_so_func(int a,int b);
test_so.c
#include "test_so.h"int test_so_func(int a,int b){ return a*b;}
生成so
gcc -shared ./test_so.c -o test_so.so
复制so文件到golang项目目录
golang项目目录,建立
load_so.h
int do_test_so_func(int a,int b);
load_so.c
#include "load_so.h"#include <dlfcn.h>int do_test_so_func(int a,int b){ void* handle; typedef int (*FPTR)(int,int); handle = dlopen("./test_so.so", 1); FPTR fptr = (FPTR)dlsym(handle, "test_so_func"); int result = (*fptr)(a,b); return result;}
test.go
package main/*#include "load_so.h"#cgo LDFLAGS: -ldl*/import "C"import "fmt"func main() { fmt.Println("20*30=", C.do_test_so_func(20, 30))}
编译运行即可。
注:某大神在用go调用c的时候,掉到了某坑里,地址http://www.newjueqi.com/?p=106,结论为
1./* */注释的代码下一行一定是import "C",中间不能有空行
2.import "C"必须单独一行,不能和其它库一起导入
0 0
- golang调用动态库
- CGO,GOLANG调用C库,调用代码、静态库或动态库
- Golang生成共享库(shared library)以及Golang生成C可调用的动态库.so和静态库.a
- Golang与C互用以及调用C的so动态库和a静态库
- golang之cgo---调用C/C++动态库函数
- golang以插件的方式加载golang动态库
- Golang官方如何支持加载动态库
- golang cgi调用golang 程序
- Golang里调用C
- Golang反射调用函数
- golang中调用C
- golang 调用redis
- golang调用c++文件
- Golang调用Python
- Golang 系统调用Syscall
- golang调用lua脚本
- golang动态解析xml
- 动态调用C++动态库
- 设计模式之State模式(笔记)
- iOS应用跳转
- iOS开发学习第十九课——匿名函数 Block
- c++中string类的详解
- 用py2exe打包成一个exe文件
- golang调用动态库
- 游戏感:虚拟感觉的游戏设计师指南——第八章 环境的测量方法
- 文本替换sed+字段处理cut,join+awk重新编排字段
- 范式
- 排列组合 包含求集合笛卡尔积
- linux设备模型 底层
- 微软100题(87)最大连续递增数字串
- C++ - C++0x/C++11 Support in GCC
- 获得Properties文件的内容