Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Lua&x2B;大口猴修补术_C++_Lua_Swig_Monkeypatching - Fatal编程技术网

C++ Lua&x2B;大口猴修补术

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

我使用SWIG将一组类绑定到lua。我知道C++本身不支持猴子修补,我也不想修改我的C++对象,只是修改它们的Lua表示。如果我想开始对SWIG导出的lua表和对象进行monkey修补,以便修改lua端提供的API,那么问题就来了

e、 g.以下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


问候