課題解決Tips

【Python】 pybind11を利用してPythonからC++の関数を利用する方法

salmoncode
記事内に商品プロモーションを含む場合があります。

こんにちは!エンジニアのサーモンです。

Pythonで開発しているときに困るシーンとして、利用したいライブラリがC++でしか提供されていないことがあります。

新しく入手したハードウェアを利用したいときなどですね。

その場合は有志が作ってくれているラッパーを利用しますが、それもないことがあります。

そんなとき、C++のライブラリを呼び出すにはどうすれば良いのでしょうか。

この記事では、PythonからC++の関数を呼び出す方法について紹介します。

この記事はこんな人におすすめ
  • C++のライブラリをPythonから利用したい人
  • C++ライブラリのラッパーを開発したい人
  • PythonのスクリプトをC++によって高速化したい人

ぜひ最後まで読んでいってください!

PythonからC++を呼び出すにはPybind11を使う

PythonとC++を連携させるには、C++の関数をPythonにバインディングする必要があります。

バインディングツールはいくつかありますが、今回はpybind11を利用します。

このツールは機械学習ライブラリとして有名なpytorchにも使われているとのことなので、安心して利用できそうですね。

ちなみに、名前からしてC++11にしか対応してなさそうですが、C++14や17にも対応しているとのことでした。

pybind11の利用方法

pybind11はpipでインストールすることができます。

PythonからC++関数の呼び出し

まずはC++の関数を定義し、Pythonから呼び出せるようにバインドします。

バインドには、pybind11から提供されるマクロを利用します。

Pythonからはマクロで指定したモジュール名でインポートすることができます。

まとめ

この記事では、PythonからC++の関数を呼び出す方法について解説しました。

参考

スポンサーリンク
書いた人
サーモン
サーモン
著者(ソフトウェアエンジニア)
こんにちは、ソフトウェアエンジニアのサーモンです。 情報系大学院を卒業後、都内IT企業に従事しています。プログラミング歴は10年以上になります。
記事URLをコピーしました