Python学习:mac下使用boost.bython扩充python

本文介绍如何在Mac上使用Boost库中的Boost.Python模块来扩展Python。通过具体的步骤和示例代码展示了从安装Boost库、编译Python库到创建并测试一个简单的扩展模块的全过程。

1、第一步,先要准备boost库,编译库,需要编译python库,我使用python的环境是python2.7。我使用的boost 1.5.7版本。存放在目录为:/Volumes/data/code/c++/boost_1_57_0。boost的编译,网上有一大把。这里就不详细说了。

说明:如果你的mac机器 /usr/include头文件很少,你可以使用下面这个命令安装。

  1. xcode-select --install


2、编写一个hello_world.cpp,代码如下:

  1. #include <iostream>
  2. #include <string>
  3. #include <boost/python.hpp>
  4. using namespace std;
  5. using namespace boost::python;
  6. void say()
  7. {
  8.    cout<<"Hello World!"<<endl;
  9. }
  10. BOOST_PYTHON_MODULE(hello_world)
  11. {
  12.    def("say", say);
  13. }
3、编译,这个时候生成hello_world.so文件。
  1. g++ -fpic -c -L/Volumes/data/code/c++/boost_1_57_0/ -I/usr/include/python2.7 hello_world.cpp
  2. g++ -shared -L/usr/lib -L/Volumes/data/code/c++/boost_1_57_0/stage/lib -lpython2.7 -lboost_python -o hello_world.so hello_world.o


4、把/Volumes/data/code/c++/boost_1_57_0/stage/lib/libboostpython.dylib拷贝到hello_world.so同一个目录下。测试新开发的模块。如下:

  1. ​fish:c++ fish$ python
  2. Python 2.7.10 (default, Jul 14 2015, 19:46:27)
  3. [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import hello_world
  6. >>> hello_world.say()
  7. Hello World!
  8. >>>
  9. >>> quit()

结束语:mac/linux使用boost.python库扩展python看上去比较简单,但由于对gcc编译命令不熟悉,很多不知道,因此摸索了很久。写这里给有需要的同学使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值