繁体   English   中英

通过Swig在C ++和Lua之间传递变量

[英]Pass variables between C++ and Lua via Swig

我正在开发一个包含大量类(150+)的C ++项目,每个类都有10到300个字段左右。 我真的希望能够提供用于测试目的的脚本接口,以便我可以编写不需要任何重新编译的回调。 我想在Lua中这样做,因为我对它的C API比我对Python的更熟悉,但如果它能省去头痛,我会很乐意用Python做。

我已经掌握了如何从我的C ++调用Lua函数,反之亦然,我知道如何来回传递基本数据类型。 我的问题是如何使用SWIG在两者之间共享用户指定的数据类型。

例如,在我的C ++中的某个时刻,我可能想要在具有250个字段的对象中评估几个成员数据。 我希望能够将该对象移交给Lua,然后可以(希望?)使用生成的SWIG包装器来操作该对象,显示某些字段,然后将(可能已更改的)对象传递回C ++以继续使用。

我还希望能够使用包装器在Lua中实例化对象的实例,并将其传递给C ++,以用作对象的普通C ++版本。

这可能吗? 有人能指出我的教程或明确的例子吗?

谢谢你的尽心帮助!

只要您使用Swig接口包装用户定义的类型(请参阅此处获取有关Swig-Lua API的文档),交互应该是无缝的。 提供的Swig包装器将允许您实例化新对象,将它们传递给C ++,反之亦然。

我不相信Swig-Lua包装支持导向类,这意味着扩展现有类,实例化它们并将它们传递回C ++是不可能的。 但是,支持Python,Java,C#等语言。

如果swig给你带来麻烦,我已经好好使用最新版本的tolua ++,它的唯一目的是绑定C ++和Lua。 它需要一个修改过的.h文件作为输入,这有点单调乏味,但不比Swig的模块更多。 我没有理由偏爱另一个,但知道两者都很好。

你也应该看看Luabind。 这个实现了Lua的OOP,可以将Lua中的类和数据类型映射回C ++。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM