2011-10-14 15 views
5

最終的に私のC++プログラムの値を1行ずつ操作するpythonスクリプトを実行して、C++プログラムの実行文をPythonスクリプト。今、私はPythonインタプリタに私のスクリプトを一度に1行ずつフィードしようとしています。しかし、それは文脈を望んでおり、私はそれをどのように構築するのか分かりません。誰も私に良いチュートリアルを教えてもらえますか(この文書はあまり良くありません)。PythonスクリプトをC++ Python APIを使用して1行ずつ実行する

私は私の質問に最もよく答えた回答を選んだが、これはアプリケーションによっては十分ではないと考えている。 これらのアプリケーションで動作する答えは、Python APIで低レベルの呼び出しを伴う可能性があります。あなたが実行をより詳細に制御できる答えがあれば質問に答えてください。

私は非常に密接に関連している後に別の問題が発生したため、この後に別の質問をしました。リンク:Python C API - Stopping Execution (and continuing it later)

答えて

3

一度に1行ずつスクリプトを供給することは難しいと思います。それぞれの実行行で呼び出される関数を設定するには、sys.settrace()を参照してください。わずかに異なる形式でPyEval_SetTraceを使用してC APIで設定することもできます。

+0

いいですね。私はそれを見ます。トレースが何だったのか分からなかった。ありがとう。 – Miles

+0

AWSOME。本当にありがとう!質問に十分に答えました。 – Miles

1

私はあなたの目標を完全に理解しているとは確信していませんが、8ヶ月前に私は同様のことをしたいと思っていました。私はPythonスクリプトから私のC++アプリケーションを動かせるようにしたかったのです。私はwin32、Qt、gccにいた。最近、gccのデバッガであるgdbをPythonでスクリプト化できることが判明しました。私には多くの読書と仕事の数日しかかかりませんでしたが、うまくいきました。私は私のC++ソースに余分なコードを追加する必要はありませんでした!

+0

私はそれを調べます。それがうまくいくなら、私は解決をマークします。 – Miles

+0

GDBは実行時にスクリプトを受け入れ、リリースビルドに含めることができますか? – Miles

+0

上記の人には解決策がありました:python APIには解決策がありましたプログラミングの経験がないために私は目が見えませんでした。デバッグトレースが何であるか分かりませんでした。とにかくありがとう。 – Miles

0

私はあなたに何を伝えますか?私はあなたのpythonスクリプトをC++アプリケーションに変換するのが最善だと思います。これはあなたのソースに埋め込むための作業と便利なコードを持つ方法です。
もしあなたのcアプリがそれほど大きくなければ、おそらくあなたはpythonのc-extensionを作って、メインのアプリにpythonコードを送る方が好きかもしれません。
いずれにせよ、私はCythonでやります。 次の質問を使用して、希望する場合にこのジョブを実行する方法を理解することができます。Convert Python program to C/C++ code?

+0

私は単純に私のPythonコードを移植したくありません。私はそれを作ろうとしているので、自分のプログラムで読み込まれたスクリプトを、私の最初の投稿に書かれているようにリアルタイムで書くことができます。 – Miles

関連する問題