boost python单步调试_Python.Boost 学习笔记1

Python.Boost是让Python能够更直接自由的调用C++函数和类的库。这个库的产生是为了提高Python的效率。这里这个笔记介绍如何使用这样一个强大的工具。

安装指南

笔者使用homebrew管理包,之前使用homebrew安装了2.7.9版本的Python(这使得后面出现了cmake错误,后面再说)。首先安装boost库

brew install boost

接着安装Python.Boost

brew install boost-python

这里笔者安装的为1.59.0版本的boost和对应的Python.Boost

Hello World

首先介绍如何写一个Python.Boost的Hello World。在代码中我们使用C++实现一个返回字符串 "hello, world" 的函数并将其添加到模块中,C++函数如下:

char const* greet() {

return "hello, world"

}

我们希望将其转化为Python能调用的包,这里我们要使用Boost.Python的功能,将greet函数定义为python能够调用的函数

#include

#include

BOOST_PYTHON_MODULE(hello) {

using namespace boost::python;

def("greet", greet);

};

这里应该是用到了Boost.Python中定义的宏来进行转化,具体内容以后会仔细研读。

之后就是编译的需要,这里使用cmake,没有采用boost的bjam,具体是因为对于bjam还不熟,cmake比较熟悉一点。

cmake_minimum_required(VERSION 2.8.3)

FIND_PACKAGE(PythonInterp)

FIND_PACKAGE(PythonLibs)

FIND_PACKAGE(Boost COMPONENTS python)

上面会自动需找所需要的一些包,然后可以添加子目录,比如我们将上面的hello.cpp放在hello-world目录下,我们就添加如下子目录

ADD_SUBDIRECTORY(hello-world)

在hello-world目录下我们插入如下cmake命令

PYTHON_ADD_MODULE(hello hello.cpp)

这样按照平常的cmake习惯进行配置编译即可

brew管理下的特殊命令

如果之前使用brew安装过Python并且使用brew管理boost库,可能会出现在使用Python调用自己所写的类的时候出现错误,这是因为cmake找到的Python库为系统自带的库而非brew编译的库,这时候需要在cmake的时候加入指定Python的命令,以2.7为例:

cmake -DPYTHON_LIBRARY=/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib

后面在如平常加入路径

备注

需要注意cpp文件中BOOST_PYTHON_MODULE后面的名字需要和cmake中的PYTHON_ADD_MODULE保持一直,否则会报init函数的错误

不知道为什么如果不include的时候会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值