私は JUCE を使用して音楽トレーニング ゲームを設計しています。JUCE はマルチプラットフォームの C++ フレームワークであり、オーディオ/ビジュアルをワイヤーの近くでコーディングできます。
しかし、私は自分のゲームプレイ (制御フロー/データ処理) を Python でコーディングしました。これは複雑であり、さまざまなゲームプレイを試すことができるように変更し続けたいと考えています。Python は、この種のラピッド プロトタイピング作業に最適です。
したがって、(プラットフォームに依存しないため、Win/OSX/Lin/iOS/And) C++ で Python ランタイムを起動し、.py ファイルをフィードして、その .py でさまざまな関数を呼び出します。また、.py から C++ コードにコールバックできるようにしたいと考えています。
関連する公式の Python ドキュメントは次のとおりです: https://docs.python.org/2/extending/extending.html
CodeProject の記事は次のとおりです: http://www.codeproject.com/Articles/11805/Embedding-Python-in-CC-Part-I
ただし、どちらもマルチプラットフォームの問題に対処していないようです.
ライブラリ libpython.a とリンクし、ランタイム環境の起動、スクリプトのロード、python-code の実行などのさまざまな機能を含む #include をリンクするのがテクニックのようです。
しかし、確かにこの libpython.a はプラットフォームごとに個別にコンパイルする必要がありますか? もしそうなら、これはあまりきれいな解決策ではないので、代わりに Python ソース コードをプロジェクトに追加して、.a をコンパイルすることができますか?
どうすればこれを行うことができますか?
編集: https://wiki.python.org/moin/boost.python/EmbeddingPython
EDIT2: ここで完全な CPython ソース コードを取り込もうとするのはやり過ぎだと確信しています。システム コール/マルチスレッド/ファンシーなものをサポートしない C/C++ で、必要最小限の Python 実装を誰かが作成したに違いありません。 - Python 構文を 1 行ずつ処理するだけです。https://wiki.python.org/moin/PythonImplementationsを調べてみましたが、明らかな候補が見つかりません。
EDIT3: https://github.com/micropython/micropythonを最後のページに追加する必要がありますが、それでも私が求めているものではないようです