c++和python的结合——boost库的使用

在写python项目的时候,很容易遇到一个问题,python的运行速度过慢,我们需要使用c++代码。这个时候如何用python调用c++代码呢?
下面讲解采用boost库去实现这个功能。内容包括 boost库的安装,用boost库生成python可以使用的文件。

boost库的安装

由于采用的是实验室的服务器,没有root权限,因此参考了这篇博文linux 无root 安装boost库 C++。也可以参考boost库官方文档
在这里插入图片描述
这里补充两个知识点
LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):

export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH

LD_LIBRARY_PATH的作用是:环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):

export LD_LIBRARY_PATH=LIBDIR1:LIBDIR2:$LD_LIBRARY_PATH

如果不采用这些变量的话,我们在运行的时候还能指定库,例如

c++ -I /opt/homebrew/include boost_test/main.cpp -o test1 -L /opt/homebrew/lib -lboost_regex

这里还有一个坑需要注意!!!
安装的时候默认是python2,我们需要在运行./b2时采用./b2 --with-python include="~/anaconda3/include/python3.9/" install这样去指定python版本。

用boost库生成python能运行的.so文件

首先我们编写一个hello_ext.cpp
在这里插入图片描述

之后生成.so库

c++ hello.cpp -L ~/opt/boost/lib -fPIC -shared -o libhello.so

问题出现了!!!
报错fatal error: pyconfig.h: No such file or directory # include <pyconfig.h>
经过原因查找是没有找到<pyconfig.h>,所以要用-I指定包含这个库的位置
完整命令如下:

g++ -fPIC -I ~/anaconda3/include/python3.9/ hello_ext.cpp -shared -o hello_ext.so -L ~/anaconda3/lib/ -L ~/opt/boost/lib/ -lboost_python39

生成.so文件后就可以运行啦!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值