-
C++拡張モジュールを使用する方法: PythonはC++との統合をサポートするために、C++拡張モジュールという仕組みを提供しています。C++拡張モジュールを使用すると、C++で書かれた関数やクラスをPythonから直接呼び出すことができます。以下は、C++で書かれた関数をPythonから呼び出す例です。
// example.cpp #include <iostream> extern "C" { int add(int a, int b) { return a + b; } }
# example.py from ctypes import cdll lib = cdll.LoadLibrary('./example.so') result = lib.add(3, 4) print(result) # Output: 7
上記の例では、C++の
add
関数をPythonから呼び出しています。C++コードをコンパイルして共有ライブラリ(.soファイル)を作成し、ctypes
モジュールを使用してPythonから呼び出しています。 -
SWIG(Simplified Wrapper and Interface Generator)を使用する方法: SWIGは、PythonとC++の統合を簡単に行うためのツールです。SWIGを使用すると、C++のコードからPythonバインディングを生成できます。以下は、SWIGを使用してC++コードとPythonコードを統合する例です。
// example.cpp #include <iostream> extern "C" { int add(int a, int b) { return a + b; } }
%module example %{ extern int add(int a, int b); %} extern int add(int a, int b);
# example.py import example result = example.add(3, 4) print(result) # Output: 7
上記の例では、C++の
add
関数をPythonから呼び出すために、SWIGを使用してインターフェースファイル(.iファイル)を作成しています。SWIGを使用してPythonバインディングを生成し、PythonからC++の関数を呼び出しています。 -
Boost.Pythonを使用する方法: Boost.Pythonは、C++とPythonの統合をサポートするライブラリです。Boost.Pythonを使用すると、C++のクラスや関数をPythonから直接呼び出すことができます。以下は、Boost.Pythonを使用してC++とPythonを統合する例です。
// example.cpp #include <iostream> #include <boost/python.hpp> int add(int a, int b) { return a + b; } BOOST_PYTHON_MODULE(example) { using namespace boost::python; def("add", add); }
# example.py import example result = example.add(3, 4) print(result) # Output: 7
上記の例では、Boost.Pythonを使用してC++の
add
関数をPythonから呼び出しています。C++コードでBoost.Pythonモジュールを作成し、Pythonからそのモジュールをインポートして関数を呼び出しています。
以上がPythonとC++の統合方法のいくつかです。他にもさまざまな方法がありますが、この記事では紹介しきれません。統合方法の選択は、プロジェクトの要件や好みによって異なります。ここで紹介した方法は、一般的な統合手法の一部です。
統合に関する詳細な解説やさらなるコード例については、公式ドキュメントやオンラインのリソースを参照してください。PythonとC++の統合によって、より高度なプログラミングの可能性を追求できるでしょう。