2008-09-19 59 views
12

你使用Luabind,toLua ++還是其他一些庫(如果是,哪一個)或者根本沒有?你如何將Lua粘貼到C++代碼?

對於每種方法,什麼是親和騙局?

+0

upps ... corrected :) – steffenj 2008-10-06 19:02:52

+0

有一些關於此主題的討論[這裏](http://stackoverflow.com/questions/63784/implementing-scripts-in-c-app#63865)。 – Mark 2008-09-19 16:16:15

回答

4

要回答我的問題部分:

Luabind:一旦你知道如何通過這種尷尬的模板語法結合的方法和類,它是非常簡單和方便地添加新的綁定。但是,luabind會對性能產生重大影響,因此不應將其用於實時應用程序。比調用直接操縱堆棧的C函數大5-20倍的開銷。

1

我沒有使用任何庫。我前段時間曾使用SWIG公開C庫,但開銷太大,我停止使用它。

優點是性能更好,控制更好,但它需要更多時間來編寫。

1

使用原始Lua API進行綁定 - 並保持簡單。從Lua作者的API本身(AUX庫)和庫中獲取靈感。

在一些實踐中,原始API是最好的選擇 - 最大的靈活性和最少的不需要的開銷。你已經擁有了你想要的東西,而不再是你需要的東西。

如果您必須綁定大型第三方庫,請使用tolua,tolua ++等自動生成器(或者甚至是針對特定情況推出自己的產品)。它可以讓你免去手動工作。

我不會推薦使用Luabind。目前它的發展陷入停滯(不過開始恢復生機),如果你遇到一些特殊情況,你可能會自己做。 Luabind也大量使用模板元編程。這可能(也可能不)不可接受,這取決於觀點。

5

我真的不能與「滾你自己的」投票,結合基本類型和靜態C函數到Lua是微不足道的,是的,但情況發生了變化,你開始處理表和元表的那一刻達成一致;事情變得非常迅速。

LuaBind似乎做的工作,但我有一個哲學問題。對我來說,好像你的類型已經很複雜了,Luabind模板化程度很高的事實並不會讓你的代碼更容易遵循,正如我的一位朋友所說:「你需要Herb Shutter來找出編譯信息」 。加上它取決於升壓,加上編譯時間受到嚴重打擊等。

嘗試幾個綁定後,Tolua ++似乎是最好的。 Tolua看起來並沒有太多的發展,Tolua ++似乎工作得很好(另外一半'Tolua'教程實際上是'Tolua ++'教程,請相信我:) Tolua確實生成了正確的東西,源可以修改,它似乎處理複雜的案件(如模板,工會,無名結構等,等)

Tolua ++最大的問題似乎是缺乏適當的教程,預先設置的視覺Studio項目,或者命令行有點棘手的事實(你的路徑/文件至少在Windows中不能有空格 - 等等)。對我而言,它是贏家。