C++でも拡張モジュールは作成できます。ただしいくつか制限があります。
メインプログラム (Python インタプリタ) は C コンパイラでコンパイルされ
リンクされているので、グローバル変数や静的オブジェクトをコンストラクタ
で作成できません。メインプログラムが C++ コンパイラでリンクされて
いるならこれは問題ではありません。
Python インタプリタから呼び出される関数 (特にモジュール初期化関数)
は、extern "C"
を使って宣言しなければなりません。
また、Python ヘッダファイルをextern "C" {...}
に入れる必要
はありません-- シンボル"__cplusplus" (最近の C++ コンパイラは
全てこのシンボルを定義しています) が定義されているときに
extern "C" {...}
が行われるように、ヘッダファイル内に
すでに書かれているからです。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。