我是一名 C++ 编程人员,曾受邀在 Visual Basic 中编写一个小型应用程序。该应用程序托管 IronPython 运行时,我试图在 python 中定义一些函数,然后从 VB 调用它们。我在python中编写了一个简单的测试函数
def test():
print "Test was Called"
然后我使用 Iron 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)
我能够调用该函数,并且在标准输出中看到了预期的输出。我仍然觉得有一些类似函数指针的类型,我可以将 PythonFunction 类型的对象强制转换为它,这样我就可以直接调用 temp 而无需调用 Python 引擎。