python 怎么调用so文件

python 怎么调用so文件,第1张

当需要采用调用c++的程序的时候,需要对原有的数据加一个extern "C"封装一下即可。

采用g++编译的代码也需要的,原因可能是因为c++编译器编译后的二进制so文件中,对c++的函数进行了重新的命名导致的。

extern "C" {

Foo* Foo_new(){ return new Foo()}

void Foo_bar(Foo* foo){ foo->bar()}

}

以下两个网页又更详细的介绍

http://blog.waterlin.org/articles/using-python-ctypes-to-link-cpp-library.html

http://stackoverflow.com/questions/145270/calling-c-c-from-python

最后需要补充的一个问题是:当我调用so文件的时候,会发生一个有趣的现象:

我把python放到streaming找运行的时候,发现streaming始终查找不到so,但是数据却是被上传到hadoop的对应的work目录下。

后来定位到原因:

是python加载动态库方面是默认从系统lib库上查找库文件。

我的目录在当前目录下,所以需要从libdy.so变为./libdy.so

anaconda建立环境 python=3.7.9

切换到虚拟环境里

安装pyaudio

这个库好像只能播放.wav文件

而且wav文件内部有不同的格式 我们需要sox转换格式

sox在python里安装 pip install sox

注意 这是sox和python的接口 真正的sox文件得自己装一下

装完了还得配置环境变量

sox资源安排:

https://pan.baidu.com/s/1ar8wQc1Xdml9BJpuJ-ubrg

安装完后,就可以转换wav的内部格式了

在音乐文件路径下打开cmd或者powershell执行

sox voice.wav -b 16 -e signed-integer 00.wav

可以看到由voice.wav生成了新的文件 00.wav

在Linux中,有多种方法可以使用Python调用算法包。其中一种常见的方法是通过pip命令安装并使用第三方Python库或模块。例如,使用pip命令安装numpy、scipy等数学和科学运算库,或者使用scikit-learn、TensorFlow等机器学习和深度学习库。安装后,可以在Python脚本中引入相应库或模块,并调用包中的函数或方法来实现算法。同时,也可以使用Linux系统提供的C/Python API进行调用,或者使用系统自带的算法包,如BLAS、LAPACK等库。具体使用方法可以参考相应库或模块的文档和示例,或者网上的相关资料和教程。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11957656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存