のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

boost インストールから実行(boost::python)まで。

Sponsored Links

皆さんこんにちわ。
お元気ですか?私は疲れました。

本日はboostについて

boostとは「C++の先駆的な開発者のコミュニティ、及びそのコミュニティによって公開されているオープンソースライブラリのことを指すそうです」。(Wikipedia
boostの中にはファイル操作や線形代数ライブラリublas、pythonとの連携に関するライブラリまであります。

pythonをメインで使う人にはboostは重要かもしれません。

なぜなら、極端にpythonで書くと遅い部分をC++で書き直し、連携することによって速度向上を目指せるからです。

Python遅い時は遅いですから…。さて、インストールからいってみましょう。

インストール
brew install boost

さて、実行してみましょう。
ソースコードはお借りさせていただきました。(http://d.hatena.ne.jp/moriyoshi/20091214/1260779899

実行するソースコード
//basic.cpp
#include <boost/python.hpp>

int add(int lhs, int rhs)
{
    return lhs + rhs;
}

BOOST_PYTHON_MODULE(basic)
{
    using namespace boost::python;
    def("add", &add);
}

因みに
BOOST_PYTHON_MODULEの()内とファイル名が共通でないとPythonでのimport実行時にこんなエラーがでます。
ImportError: dynamic module does not define init function (initbasic)

コンパイル

コンパイルすると .soファイルができあがります。

g++ -I`python -c 'from distutils.sysconfig import *; print get_python_inc()'` -DPIC -bundle -fPIC -o basic.so basic.cpp -lboost_python  -framework Python
実行
python
>>> import basic
>>> basic.add(2,3)
5

さあ、あなたのコードにもboostを!