pybind11の使い方

最終更新: 2018-12-07 14:38

pybind11はC++とPythonを連携させるためのライブラリである。以下のような特徴がある。

公式ドキュメントを元に、自分に必要そうな情報をまとめておく。

インストール

Ubuntuではcmakepython-devまたはpython3-devを事前にインストールする必要がある。
pippybind11をインストールしておくとコンパイルオプションが楽に指定できる。
この記事では以下のコマンドでpybind11をインストールしたことを前提とする。

sudo apt-get install python-dev python3-dev
sudo pip install pybind11

簡単な例

公式ドキュメントのFirst stepにある例をそのまま使う。

以下のコードをexample.cppとして保存する。

#include <pybind11/pybind11.h>

namespace py = pybind11;

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin";

    m.def("add", &add, "A function which adds two numbers");
}

コンパイルは(pipでインストールした場合)

c++ -O3 -Wall -shared -std=c++11 -fPIC `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix

のように行う。Building manually を参照。

コンパイルできたらPythonから以下のように実行できる。

$ python
>>> import example
>>> example.add(1, 2)
3L