无缝替换虚拟C+的系统+;用python代码重写 游戏中,我希望能够用Python函数重写特定的C++函数,尽可能无缝。其想法是允许使用解释语言对某些功能进行快速编码,以进行原型设计/建模等
理想情况下,我希望有一个这样的结构: <我的C++源代码:无缝替换虚拟C+的系统+;用python代码重写 游戏中,我希望能够用Python函数重写特定的C++函数,尽可能无缝。其想法是允许使用解释语言对某些功能进行快速编码,以进行原型设计/建模等,python,c++,Python,C++,理想情况下,我希望有一个这样的结构: 对于这样广泛的内容,我将研究嵌入式Python的BooSo:您应该能够使用 IndiLIP加载并重新加载Python模块。这是否意味着TyeC++代码的导出和Python代码的Th导入都需要通过Boost完成?或者我可以用它半个吗?实际上,你可以在C++中嵌入Python。或者你可以将C++导出到Python。Boost在它所能做的方面是非常可变的,所以如果你只想从C++调用动态Python代码,你可以这么做。或者,您可以将C++类暴露给Python,然后使
class WorldActions
{
public:
//example of a method with a default implementation:
virtual Coordinates respawnLocation(int event) const
{
if(event == 0)
return Coordinates(0,0);
else
return Coordinates(1,0);
}
}
在python文件中:
def respawnLocationOverride(worldActionInstance, event):
coords = Coordinates()
coords.x = 1
return coords
在C++引擎中的某个点,我动态加载Python方法“ReavaNosiaOffice”,它将有效地取代WorkStase: 这可以通过一个特殊的派生类来实现,如下所示:
class WorldActionsFromPy : public WorldActions
{
public:
virtual Coordinates respawnLocation(int event) const
{
if(_something == NULL)
{
return WorldActions::respawnLocation(event);
}
else
{
return _something->callPythonMethod("respawnLocationOverride", this, event);
}
}
}
你会推荐什么样的架构让我能够尽可能简单地做到这一点?我知道我可以使用SWIG来生成所有的Python类,但是我不知道如何才能将.py.file中的python代码重新导入C++代码中。
谢谢 >对于这样广泛的内容,我将研究嵌入式Python的BooSo:您应该能够使用<代码> IndiLIP加载并重新加载Python模块。这是否意味着TyeC++代码的导出和Python代码的Th导入都需要通过Boost完成?或者我可以用它半个吗?实际上,你可以在C++中嵌入Python。或者你可以将C++导出到Python。Boost在它所能做的方面是非常可变的,所以如果你只想从C++调用动态Python代码,你可以这么做。或者,您可以将C++类暴露给Python,然后使用Python调用它们来重新加载给定的模块。在这种情况下,您显然希望用一个嵌入的Python代码来覆盖给定的函数,以便快速原型化,因此最好的教程可能在这里:如果这看起来是有生产力的,我可以在下面写一个较长的答案。嗨!感谢您的帮助,我成功地使用swig创建了一个.pyd模块,该模块用Python封装了我现有的类,因此它在Python中运行良好,我可以编写自定义Python函数。现在我如何在Python中“导入”这些函数,例如将我的“坐标”C++实例转换成“坐标”Python对象?谢谢