首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua + SWIG Monkey补丁

Lua + SWIG Monkey补丁
EN

Stack Overflow用户
提问于 2010-05-03 01:12:07
回答 2查看 552关注 0票数 1

我使用SWIG将一组类绑定到lua。我知道C++本身并不支持简单的补丁,我也不想修改我的C++对象,只是修改它们的lua表示。如果我想要开始修补SWIG导出的lua表和对象,那么问题就来了,这样我就可以修改Lua端显示的API。

例如,下面的lua代码:

代码语言:javascript
复制
game.GetEnemies1 = game.GetEnemies2

没有像预期的那样工作。这一行之后的行为仍然与最初的GetEnemies1一致,而不是GetEnemies2。

我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-17 15:32:54

我已经通过添加和替换现有方法成功地对lua用户数据进行了monkeypatched。它涉及到修改它们的metatable。

为了向现有的Here's a sample对象添加几个方法,我必须做些什么。

如你所见,我不得不修改它的metatable,而不是修改对象本身。

这个解决方案只有在用户数据对象被设置为使它们的元变量“指向自身”的情况下才有效:mt.__index = mt

致以问候!

票数 1
EN

Stack Overflow用户

发布于 2010-05-03 01:20:59

Swig从c++函数生成lua包装器,它不会将lua函数注入到c++中。如果GetEnemies1是一个从其他c++函数调用的c++函数,则猴子打补丁将不起作用。

您必须重写您的c++代码,以便执行GetEnemies1的代码查找某种您可以用swig包装的回调。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2754235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档