Jaka jest zalecana biblioteka do korzystania z Lua z C ++? [Zamknięte]


13

Obecnie planuję zintegrować skrypty Lua z moim silnikiem gier 2D i chciałbym przejść od razu do najbardziej odpowiedniego rozwiązania dla ekspozycji klas C ++ i obiektów.

Przeczytałem (jeśli to pomoże): http://lua-users.org/wiki/BindingCodeToLua

Jeśli masz lepszy język skryptowy do polecania, wybierz go; D

Wszelka pomoc jest mile widziana, muszę wybrać najlepsze rozwiązanie, aby rozpocząć wdrażanie Dzięki

Odpowiedzi:


4

Jeśli podstawową jakością Twojego języka skryptowego jest łatwe wiązanie, wypróbuj AngelScript . Może wywoływać zarejestrowane funkcje bezpośrednio, bez potrzeby pisania funkcji proxy, i obsługuje konwencje wywoływania wielu różnych kompilatorów. Sam język jest podobny do c / c ++, w zależności od tego, co może być dobre lub złe.



4

Tak długo, jak wykonujesz dość konwencjonalne oprawianie, LuaBind zrobi wszystko, czego potrzebujesz. Wiązanie klas i funkcji jest zwykle umową z jedną linią na funkcję. Jeśli chcesz przykład, oto odpowiedni plik z silnika gry, nad którym pracowałem (poszukaj modułu (L) na początek interfejsu LuaBind, DontKillMeBro <> to mały system, który przygotowałem, aby mi pozwolić a ściślej niszczenie obiektów w czasie dla niektórych wrażliwych obiektów).

Jeśli chcesz czegoś bardziej złożonego, prawdopodobnie będziesz musiał użyć rzeczywistego interfejsu Lua API. Na szczęście interfejs Lua API jest dość prosty.


1

Używamy OOLua dla Pioneer . Daje stos makr, których używasz do wiązania „klas” Lua z klasami C ++. Ma dość mocy, ale jest dość prosty. Nie korzystałem z żadnych innych, więc nie mogę komentować, jak to się porównuje. Oto przykład .


1

Chciałbym wziąć udział w prekompilowanych bibliotekach Nuclex i dołączyć pliki dla LuaBind. (to znaczy, jeśli pracujesz z VS2008)

Ponieważ LuaBind wymaga zbudowania go za pomocą niektórych bibliotek i narzędzi Boost, ten pakiet pozwoli ci zaoszczędzić cenny czas (i może trochę bólu głowy, kto wie). Powiedziałbym, że możesz uruchomić Luę w mniej niż godzinę, jeśli wiesz, co robisz.

Możesz również rozważyć zmianę domyślnej biblioteki DLL Lua na bibliotekę DLL LuaJIT, jeśli szukasz niewielkiego wzrostu wydajności . To tylko kwestia skompilowania biblioteki i zastąpienia biblioteki lib / dll, z którą łączysz się w głównym projekcie, więc jest to dość łatwe.

Z tym powodzenia!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.