C++ Lua&x2B;大口猴修补术
我使用SWIG将一组类绑定到lua。我知道C++本身不支持猴子修补,我也不想修改我的C++对象,只是修改它们的Lua表示。如果我想开始对SWIG导出的lua表和对象进行monkey修补,以便修改lua端提供的API,那么问题就来了 e、 g.以下lua代码:C++ Lua&x2B;大口猴修补术,c++,lua,swig,monkeypatching,C++,Lua,Swig,Monkeypatching,我使用SWIG将一组类绑定到lua。我知道C++本身不支持猴子修补,我也不想修改我的C++对象,只是修改它们的Lua表示。如果我想开始对SWIG导出的lua表和对象进行monkey修补,以便修改lua端提供的API,那么问题就来了 e、 g.以下lua代码: game.GetEnemies1 = game.GetEnemies2 没有按预期工作。该行之后的行为仍然与原始GetEnemies1而不是GetEnemies2一致 如何解决这个问题? SWIG从C++函数生成Lua包装器,它不将Lua
game.GetEnemies1 = game.GetEnemies2
没有按预期工作。该行之后的行为仍然与原始GetEnemies1而不是GetEnemies2一致
如何解决这个问题?
SWIG从C++函数生成Lua包装器,它不将Lua函数注入C++中。如果GETRILIIES1是一个C++函数,从其他C++函数调用,猴子补丁就不起作用。
<>你必须重写C++代码,以便执行GeuniRiS1的代码寻找可以回击的回调。
SWIG从C++函数生成Lua包装器,它不将Lua函数注入C++。如果GETRILIIES1是一个C++函数,从其他C++函数调用,猴子补丁就不起作用。
你必须重写C++代码,以便执行GeuniRiS1的代码寻找一些回调,你可以用SWIG来封装。< /P> < P>我已经通过添加和替换现有方法成功地修补了Lua UsRead数据。这涉及到修改他们的元表 为了向现有的userdata对象添加两个方法,我必须做些什么 如您所见,我没有修改对象本身,而是修改了它的元表 只有将userdata对象设置为使其元表“指向自身”时,此解决方案才会起作用:
mt.\uu index=mt
问候 我通过添加和替换现有方法成功地修补了lua userdata。这涉及到修改他们的元表 为了向现有的userdata对象添加两个方法,我必须做些什么 如您所见,我没有修改对象本身,而是修改了它的元表 只有将userdata对象设置为使其元表“指向自身”时,此解决方案才会起作用:
mt.\uu index=mt
问候我意识到用猴子补丁替换LUA中的方法只会影响Lua代码,而不必对C++本身进行修补,但这是我的意图。有一些C++方法ID在Lua端上喜欢猴子补丁,使它们更漂亮,或者甚至只是ReAMIGIN意识到用猴子补丁替换LUA中的方法只会影响Lua代码,并且不可能对C++本身进行修补,但这是我的意图。有一些C++方法ID在LUA端像猴子补丁,使它们更漂亮,甚至只是重命名。