2008-09-19 34 views
12

Bạn có sử dụng Luabind, toLua ++ hay một số thư viện khác (nếu có, cái nào) hoặc không có gì cả?Làm cách nào để bạn dán mã Lua vào C++?

Đối với mỗi cách tiếp cận, chuyên gia và con là gì?

+0

upps ... sửa lỗi :) – steffenj

+0

Có một số thảo luận về chủ đề này [ở đây] (http://stackoverflow.com/questions/63784/implementing-scripts-in-c-app#63865). – Mark

Trả lời

4

Để trả lời câu hỏi của riêng tôi trong phần:

Luabind: một khi bạn biết làm thế nào để ràng buộc các phương pháp và các lớp học qua mẫu cú pháp vụng về này, nó khá đơn giản và dễ dàng để thêm các ràng buộc mới. Tuy nhiên, luabind có tác động hiệu suất đáng kể và không được sử dụng cho các ứng dụng thời gian thực. Cao hơn khoảng 5-20 lần so với gọi các hàm C thao tác trực tiếp với chồng.

1

Tôi không sử dụng bất kỳ thư viện nào. Tôi đã sử dụng SWIG để trưng ra một thư viện C một thời gian trước đây, nhưng có quá nhiều chi phí, và tôi ngừng sử dụng nó.

Ưu điểm là hiệu suất tốt hơn và kiểm soát nhiều hơn, nhưng phải mất nhiều thời gian hơn để viết.

1

Sử dụng API Lua thô cho các ràng buộc của bạn - và giữ chúng đơn giản. Lấy cảm hứng trong chính API (thư viện AUX) và thư viện của tác giả Lua.

Với một số API thực hành thô là lựa chọn tốt nhất - tính linh hoạt tối đa và tối thiểu chi phí không cần thiết. Bạn có những gì bạn muốn và không còn nữa, theo cách bạn cần.

Nếu bạn phải ràng buộc các thư viện của bên thứ ba lớn, hãy sử dụng các trình tạo tự động như tolua, tolua ++ (hoặc thậm chí cuộn của riêng bạn cho trường hợp cụ thể). Nó sẽ giải phóng bạn khỏi công việc thủ công.

Tôi không khuyên bạn nên sử dụng Luabind. Tại thời điểm nó phát triển bị đình trệ (tuy nhiên bắt đầu trở lại với cuộc sống), và nếu bạn sẽ gặp một số trường hợp góc, bạn có thể là của riêng bạn. Ngoài ra Luabind sử dụng rất nhiều template metaprogramming. Điều này có thể (và có thể không) là không thể chấp nhận được, tùy thuộc vào quan điểm.

+0

Ngoài những người có thể đang sử dụng trình biên dịch không hỗ trợ TMP, tôi không thấy lý do tại sao nó không thể chấp nhận được.Đối với phát triển, có một số (gần đây tôi đã góp phần tăng cường/sửa chữa), và hầu hết thời gian tôi không tìm thấy nó thiếu bất cứ điều gì quá quan trọng. Nó không * rất * hoạt động, mặc dù, đúng sự thật. –

5

Tôi thực sự không đồng ý với việc 'bỏ phiếu của riêng bạn', ràng buộc các loại cơ bản và hàm tĩnh C cho Lua là tầm thường, có, nhưng hình ảnh thay đổi thời điểm bạn bắt đầu giao dịch với bảng và bảng meta; mọi thứ trở nên phức tạp hơn rất nhanh.

LuaBind dường như thực hiện công việc, nhưng tôi có vấn đề về triết học với nó. Đối với tôi, có vẻ như các loại của bạn đã phức tạp thực tế là Luabind có nhiều khuôn mẫu sẽ không làm cho mã của bạn trở nên dễ dàng hơn, như một người bạn của tôi nói "bạn sẽ cần Herb Shutter để tìm ra các thông điệp biên dịch" . Plus nó phụ thuộc vào Boost, cộng với thời gian biên dịch có được một hit nghiêm trọng, vv

Sau khi thử một vài ràng buộc, Tolua ++ có vẻ là tốt nhất. Tolua dường như không có nhiều phát triển, như Tolua ++ dường như làm việc tốt (cộng với một nửa các hướng dẫn 'Tolua' ra có, trên thực tế, 'Tolua ++' hướng dẫn, tin tưởng tôi về điều đó :) Tolua không tạo ra quyền công cụ, nguồn có thể được sửa đổi và có vẻ như để đối phó với các trường hợp phức tạp (như mẫu, công đoàn, cấu trúc không tên, v.v.)

Vấn đề lớn nhất với Tolua ++ dường như thiếu hướng dẫn thích hợp, được đặt trước trực quan Các dự án studio, hoặc thực tế là dòng lệnh là một chút khó khăn để làm theo (bạn đường dẫn/tập tin không thể có khoảng trắng - trong Windows ít nhất - vv) Tuy nhiên, đối với tôi nó là người chiến thắng.

Các vấn đề liên quan