你如何将Lua粘贴到C ++代码?

时间:2008-09-19 16:14:18

标签: c++ scripting lua

您是使用Luabind,还是其他库(如果是,哪一个)或根本没有?

对于每种方法,专业人士和骗子是什么?

4 个答案:

答案 0 :(得分:5)

我真的不同意'滚动你自己'的投票,将基本类型和静态C函数绑定到Lua是微不足道的,是的,但是当你开始处理表格和元数据时,图片就会改变;事情变得更加棘手。

LuaBind似乎做了这个工作,但我有一个哲学问题。对我来说,似乎你的类型已经很复杂,Luabind模仿的事实并不会让你的代码变得更容易理解,因为我的一位朋友说“你需要Herb Shutter才能找出编译信息” 。此外,它取决于Boost,加上编译时间受到严重打击等等。

尝试几个绑定后,Tolua ++似乎是最好的。 Tolua似乎没有太多开发,因为Tolua ++似乎工作正常(加上'Tolua'教程的一半,事实上,'Tolua ++'教程,相信我:) Tolua确实生成了正确的东西,源可以修改,它似乎处理复杂的情况(如模板,工会,无名结构等)

Tolua ++最大的问题似乎是缺乏适当的教程,预先设置Visual Studio项目,或者命令行有点难以理解(你的路径/文件不能有空格-in Windows至少 - 依此类推)仍然,对我而言,它是胜利者。

答案 1 :(得分:4)

部分回答我自己的问题:

Luabind:一旦你知道如何通过这种笨拙的模板语法绑定方法和类,它就非常简单易行,可以添加新的绑定。但是,luabind具有显着的性能影响,不应用于实时应用程序。比调用直接操作堆栈的C函数的开销大约多5-20倍。

答案 2 :(得分:1)

我不使用任何库。我前段时间使用过SWIG来暴露一个C库,但开销太大了,我就停止使用它了。

优点是更好的性能和更多的控制,但它需要更多的时间来编写。

答案 3 :(得分:1)

使用原始Lua API进行绑定 - 并保持简单。从Lua作者的API本身(AUX库)和库中获取灵感。

通过一些练习,原始API是最佳选择 - 最大的灵活性和最少的不必要的开销。你已经得到了你想要的东西,而不是你需要它的方式。

如果必须绑定大型第三方库,请使用自动生成器,如tolua,tolua ++(甚至可以根据具体情况自行编写)。它可以让你免于手工操作。

我不建议使用Luabind。目前它的发展停滞不前(但开始恢复生机),如果你遇到一些角落的情况,你可能会独立。 Luabind也大量使用模板元编程。根据观点,这可能(也可能不)是不可接受的。