2012-03-19 6 views
2

私がしようとしているのは、ユーザーがPythonスクリプトを入力できるようにするC/C++でアプリを書くことです。アプリはそれを&と解釈します。前述のスクリプトには、Cで実装してユーザーに公開する別のAPIが用意されています。C/C++ Pythonインタプリタ

これを行う方法はありますか?私はGoogleで検索しましたが、実際のインタプリタではなく(Luaのような)「拡張機能」を作成する方法しか見つけられませんでした。

+0

これは間違いなく可能です。どのようにしたらよいか分かりませんが、Cプログラムの中でPythonインタプリタを実行できることはわかります。文明IVはそれを行います。 :-) – Omnifarious

+5

"バインディング"があなたの検索を捨てているかもしれません。一般的には、言語間のインターフェイスのいくつかの種類を示しますが、 "埋め込み"はあなたが意味するものです。 – ssube

+0

@peachykeenは頭をアップしてくれてありがとう、多分私は過去に問題があったのです! –

答えて

8

ドキュメントを約Embedding Python in Another Application言う:

前の章がそれにC関数のライブラリをPythonに結びつけて機能を拡張する方法、つまり、パイソンを拡張する方法について説明しました。 逆も可能です:Pythonを埋め込んでC/C++アプリケーションを充実させましょう。埋め込み機能は、CまたはC++ではなくPythonでアプリケーションの機能の一部を実装する機能をアプリケーションに提供します。これは多くの目的に使用できます。 Pythonでいくつかのスクリプトを書くことで、ユーザーがアプリケーションをニーズに合わせて調整できるようにするのがその一例です。また、Pythonでより簡単に書くことができれば、自分で使うこともできます。特にExtending Embedded Python

ルック:

はこれまで、埋め込まれたPythonインタプリタはアプリケーション本体の機能にアクセスがありませんでした。 Python APIは、組み込みインタプリタを拡張することでこれを可能にします。つまり、埋め込みインタープリタは、アプリケーションによって提供されるルーチンで拡張されます。

ちょうど私が参照ドキュメントを読んで、あなたはあなたがBoost Python

1

で書かれたアプリ内でPythonインタプリタを実装することができるはずです興味があれば、私は最近、第1の原則からC++用の組み込みPythonスクリプトを実装しました。私は、ECS:Python(Pythonを使った埋め込みC++スクリプト)というC++ Pythonラッパーライブラリを作成しました。このライブラリを使用すると、C++アプリケーションからインタラクティブスクリプト用の埋め込みPythonインタプリタにオブジェクトを公開できます。軽量で使いやすい(しかも無料!)。

http://sourceforge.net/projects/ecspython

+1

これは、PythonへのC++拡張を記述し、それらの拡張が継承階層に賢く参加できるようにするのに最適です。しかし、Pythonを別のアプリケーションに組み込むのにはあまり適していません。 – Omnifarious

1

を使ってPythonにC++からの呼び出し、およびその逆を行うことができますC.

関連する問題