C ++ 'dan Lua kullanmak için önerilen kütüphane nedir? [kapalı]


13

Şu anda Lua betiklerini 2D Oyun Motoruma nasıl entegre edeceğimizi planlıyorum ve doğrudan C ++ sınıfları ve nesneleri ortaya çıkarmak için en uygun çözüme gitmek istiyorum.

Bunu okudum (yardım etmenize yardımcı olursa): http://lua-users.org/wiki/BindingCodeToLua

Tavsiye edilecek daha iyi bir betik diliniz varsa, bunu deneyin; D

Tüm yardım açığız, uygulamaya başlamak için en iyi çözümü seçmem gerekiyor Teşekkürler

Yanıtlar:


4

Komut dosyası dilinizin birincil kalitesi kolay bağlayıcıysa, AngelScript'i deneyin . Proxy işlevleri yazmaya gerek kalmadan kayıtlı işlevleri doğrudan çağırabilir ve çok çeşitli derleyicilerin arama kurallarını destekler. Dilin kendisi, bağlı olarak iyi veya kötü bir şey olabilecek c / c ++ 'ya benzer.



4

Oldukça konvansiyonel ciltleme yaptığınız sürece, LuaBind ihtiyacınız olan her şeyi yapacaktır. Sınıfları ve işlevleri bağlamak, işlev başına tek satırlık bir anlaşma olma eğilimindedir. Bir örnek isterseniz, burada ben LuaBind arayüzünün başlaması için modül (L için (görünüm) üzerinde çalışıyoruz oyun motorundan uygulanabilir dosya, DontKillMeBro <> Ben bana izin besleniyor biraz sistemdir belirli hassas nesneler için daha kesin olarak zaman nesnesi imhası.)

Daha karmaşık bir şey istiyorsanız, muhtemelen gerçek Lua API'sını kullanmanız gerekecektir. Neyse ki, Lua API oldukça basittir.


1

Pioneer için OOLua kullanıyoruz . Lua "sınıflarını" C ++ sınıflarına bağlamak için kullandığınız bir yığın makro verir. Oldukça güçlü bir gücü var ama oldukça basit. Başka hiç kullanmadım, bu yüzden nasıl karşılaştırdığına dair yorum yapamam. İşte bir örnek .


1

Nuclex'in önceden derlenmiş kütüphaneleriyle elimden aşağı gider ve LuaBind için dosyalar eklerdim. (yani VS2008 ile çalışıyorsanız)

LuaBind, bazı Boost kütüphaneleri ve araçları ile inşa etmenizi gerektirdiğinden, bu paket size değerli zaman kazandıracaktır (ve belki de kimin bildiği bir baş ağrısı). Ne yaptığını biliyorsan, Lua'yı bir saatten daha kısa bir süre içinde çalıştırabileceğini söyleyebilirim.

Küçük bir performans artışı arıyorsanız , varsayılan Lua dll'sini bir LuaJIT dll'sine değiştirmeyi de düşünebilirsiniz . Bu sadece kütüphaneyi derleme ve ana projenizde bağlandığınız lib / dll'yi değiştirme meselesidir, bu yüzden oldukça kolaydır.

Bununla iyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.