C/C++からPythonを使う

要旨

 コンパイル方法

  • 色々なライブラリやインクルードパスを指定する必要がある.それらを確認するためのツールがpython-config.MacOSだとframework pythonとかで一式いけるみたいだ.全部は要らない場合もあるから,確認してからCMakeList.txt作るのも良いかもしれない.
gcc hoge.cpp $(python-config --cflags) $(python-config --labs)

使い方(1)

  1. Py_Initialize()でPythonインタプリタを初期化.
  2. PyRun_SimpleStirng(pythonコード文字列)でpythonコードを実行する.
  3. Py_Finalize()でインタプリタを終了.
#include <cstdio>
#include <Python.h>

int main(void)
{
  Py_Initialize();
  PyRun_SimpleString("print 'hello world'");
  Py_Finalize();
    
  return 0;
}

使い方(2)

上の例は実際はあまり使わない.使い方としては既存のスクリプトの中の関数を実行するというシーンが多いはず.これはC->Pythonの例だけど,Python->Cの例も実はほとんど変わらない.やっていることは(1)データの変換,(2)外部での実行,そして(3)データの逆変換.C->PythonPython->Cでは順番が逆なだけ. 1.

  • その他メモ

  • pythonとcどっちがトップ(どっちからどっち叩くんだろう?)なんだろう?
  • topはmainモジュール