1

我已经完成并定义了我的新类型,将它们存储在 pytypeobject 中并调用了以下函数(在初始化解释器之后):

PyType_Ready(); //这需要我定义的类型

PyModule_AddObject(); //这会将定义的类型添加到我使用 PyModule_Create() 创建的模块中;

现在,当我尝试使用我定义的类型时,解释器说它不存在,所以我假设必须采取另一个步骤才能在运行时添加类型,或者我必须执行其他一些步骤采取实现这一目标。

任何帮助将不胜感激。

Python 语法错误:

Traceback (most recent call last):
  File "testscript.py", line 1, in <module>
    import Bound
ImportError: No module named Bound

测试脚本内容:

import Bound
l = Bound.Foo()

Bound 是我定义模块的名称,而 Foo 是我试图定义的类型,用于测试目的。

4

1 回答 1

2

所以我想出了我需要做什么,我必须先调用一个函数Py_Initialize

PyImport_AppendInittab( ModuleName, ModuleInitFunction );

这会将模块名称添加到 python 模块字典中,因此当您调用时import ModuleName,如果是第一次,它将调用ModuleInitFunction(我有,但没有在正确的地方使用),它会创建模块。现在,在创建模块之后,您可以继续在运行时向它添加类型,这就是我所做的。

现在我可以在运行时成功地将用户定义的 C++ 类绑定到 python,然后在我们的游戏引擎的脚本中使用它们。现在我正在解决运行时的问题,但它应该会在接下来的几天内启动并运行。无论如何,如果其他人决定将 python 嵌入到游戏引擎中进行脚本编写,我相信我可以提供帮助。

于 2011-06-29T00:28:49.057 回答