
正文
python调用so函数 python 调用so
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python可以调用.so或.a库吗
应该可以的。
关键是你要确定.a或.so是用C或C++编写的。
还有就是你要清楚地知道调用方法的接口。
用这下面的方式来调用
import ctypes
c = ctypes.cdll.LoadLibrary('xxx.so')
c.xxx(para)
相关问答
Q1: Python 调用 so
先来一个网上随便都能找得到的例子吧:先来一个test.c
在来一个test.h:
然后将其编译成.so文件:
最后在python文件里面调用:
然后在终端运行:
嗯,python2的这个数字精度的bug也是醉了
当然了,ctypes不是这样简单的模块,否则也不会放到标准库里面去
(未完待续。。。)
Q2: python 怎么调用so文件
当需要采用调用c++的程序的时候,需要对原有的数据加一个extern "C"封装一下即可。
采用g++编译的代码也需要的,原因可能是因为c++编译器编译后的二进制so文件中,对c++的函数进行了重新的命名导致的。
extern "C" {
Foo* Foo_new(){ return new Foo(); }
void Foo_bar(Foo* foo){ foo-bar(); }
}
以下两个网页又更详细的介绍
最后需要补充的一个问题是:当我调用so文件的时候,会发生一个有趣的现象:
我把python放到streaming找运行的时候,发现streaming始终查找不到so,但是数据却是被上传到hadoop的对应的work目录下。
后来定位到原因:
是python加载动态库方面是默认从系统lib库上查找库文件。
我的目录在当前目录下,所以需要从libdy.so变为./libdy.so
python调用so函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python 调用so、python调用so函数的信息别忘了在本站进行查找喔。








