Thư viện được đề xuất cho việc sử dụng Lua từ C ++ là gì? [đóng cửa]


13

Tôi hiện đang lên kế hoạch làm thế nào để tích hợp kịch bản Lua trong Công cụ trò chơi 2D của mình và tôi muốn đi thẳng đến giải pháp đầy đủ nhất để tiếp xúc với các lớp và đối tượng C ++.

Tôi đã đọc cái này (nếu nó giúp bạn): http://lua-users.org/wiki/BindingCodeToLua

Nếu bạn có một ngôn ngữ kịch bản tốt hơn để giới thiệu, hãy dùng nó; D

Mọi sự giúp đỡ đều được chào đón, tôi cần chọn giải pháp tốt nhất để bắt đầu thực hiện Cảm ơn

Câu trả lời:


4

Nếu chất lượng chính của ngôn ngữ kịch bản của bạn dễ ràng buộc, hãy thử AngelScript . Nó có thể gọi các hàm đã đăng ký trực tiếp mà không cần phải viết các hàm proxy và nó hỗ trợ gọi các quy ước của nhiều trình biên dịch. Ngôn ngữ tự nó tương tự như c / c ++, có thể là một điều tốt hoặc xấu, tùy thuộc.



4

Miễn là bạn đang thực hiện ràng buộc thông thường hợp lý, LuaBind sẽ làm mọi thứ bạn cần. Các lớp và hàm liên kết có xu hướng là một thỏa thuận một dòng trên mỗi hàm. Nếu bạn muốn một ví dụ, đây là tệp áp dụng từ công cụ trò chơi mà tôi đang làm việc (tìm mô-đun (L) để bắt đầu giao diện LuaBind, DontKillMeBro <> là một hệ thống nhỏ mà tôi đã dựng lên để cho tôi chính xác hơn thời gian phá hủy đối tượng cho các đối tượng nhạy cảm nhất định.)

Nếu bạn muốn một cái gì đó phức tạp hơn, có lẽ bạn sẽ cần sử dụng API Lua thực tế. May mắn thay, API Lua rất đơn giản.


1

Chúng tôi đang sử dụng OOLua cho Tiên phong . Nó cung cấp một đống macro mà bạn sử dụng để liên kết các "lớp" Lua với các lớp C ++. Nó có một chút sức mạnh nhưng khá đơn giản. Tôi chưa sử dụng bất kỳ người nào khác vì vậy tôi không thể nhận xét về cách so sánh. Đây là một ví dụ .


1

Tôi sẽ bắt tay với các lib được biên dịch sẵn của Nuclex và bao gồm các tệp cho LuaBind. (đó là nếu bạn đang làm việc với VS2008)

Vì LuaBind yêu cầu bạn xây dựng nó với một số công cụ và lib Boost, gói này sẽ giúp bạn tiết kiệm thời gian quý báu (và có thể là một số vấn đề đau đầu, ai biết được). Tôi muốn nói rằng bạn có thể khiến Lua chạy trong vòng chưa đầy một giờ nếu bạn biết bạn đang làm gì.

Bạn cũng có thể xem xét thay đổi Lua dll mặc định thành dll LuaJIT nếu bạn đang tìm kiếm một hiệu suất nhỏ . Đây chỉ là vấn đề biên dịch thư viện và thay thế lib / dll mà bạn đang liên kết trong dự án chính của mình, vì vậy nó khá dễ dàng.

Cùng với đó, chúc may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.