私は、Visual Basic で小さなアプリケーションを作成するために利用された C++ プログラミングです。アプリケーションは IronPython ランタイムをホストしており、Python で関数を定義して VB から呼び出そうとしています。Pythonで簡単なテスト関数を作成しました
def test():
print "Test was Called"
次に、鉄の python を使用して、python ファイルから ScriptSource を作成します。オブジェクト操作を通じて「テスト」変数を検索することはできますが、そのオブジェクトを呼び出す方法がわかりません。例 (VB):
pyScope = engine.CreateScope()
pySource = engine.CreateSourceFromFile("C:\Some\File\path\test.py")
pySource.Execute(pyScope)
' Now I expect the function test() to be defined in pyScope
Dim tmp as Object
pyScope.TryGetVariable("test", tmp)
私のコードのこの時点で、tmp は PythonFunction 型のオブジェクトとして定義されています。この関数を呼び出す方法がわかりません。
tmp()
有効な VB 構文ではありません。ここまで来ましたが、この一見単純なタスクをどのように実行すればよいでしょうか?
編集:電話で
pyEngine.Operations.Invoke(tmp)
関数を呼び出すことができ、stdout に期待される出力が表示されます。PythonFunction 型のオブジェクトをキャストできる関数ポインタのような型があり、Python エンジンを呼び出さずに temp を直接呼び出すことができるという印象がまだ残っています。