2009-06-01 28 views
14

Tôi đang cố gắng sử dụng Lua trên iPhone. Trên Mac OS X, trong một (-iOS phi) ứng dụng Cocoa bình thường, tôi đã sử dụng đoạn mã sau:Lua trên iPhone?

lua_State* l; 
l = lua_open(); 
luaL_openlibs(l); 
luaL_loadstring(l, "print(\"Hi from Lua\");"); 
lua_pcall(l, 0, 0, 0); 

tôi tải Lua 5.1.4 từ lua.org/ftp và biên dịch nó cho Mac OS X. Trong dự án Xcode, tôi đã sử dụng "Thêm khung hiện có" để thêm liblua.a và tôi đã sử dụng "Thêm tệp hiện có" để thêm thư mục bao gồm.

Điều này hoạt động như mong đợi và in chuỗi: "Xin chào từ Lua". Khi tôi cố gắng điều tương tự trong một dự án iOS, nó mang lại cho các lỗi:

"_luaL_newstate", referenced from: 
_main in main.o 
more of the same thing... 
symbol(s) not found 
collect2: ld returned 1 exit status 

Dường như file .a không liên kết vào ứng dụng iPhone. Có ai biết cách làm công việc này không?

(Bằng cách này, tôi không thực sự quan tâm rằng Apple có thể không chấp nhận ứng dụng của tôi nếu nó có Lua trong đó.)

+2

Tôi không nghĩ Apple sẽ từ chối nếu bạn có Lua trong đó. Đó là một ý tưởng tuyệt vời. – Kekoa

+0

Dường như Apple có thể làm mềm vị trí của họ trên các trình thông dịch nhúng trong các ứng dụng iOS; xem http://www.appleoutsider.com/2010/06/10/hello-lua/ –

Trả lời

19

Bạn sẽ cần phải biên dịch .a Lua cho ARM, không Intel. Nếu thư viện Lua sử dụng autoconf, bạn có thể sử dụng trình tạo iphone/autoconf yêu thích của mình: build_for_iphoneos. Nếu nó không phải là autoconf, thì bạn có thể sử dụng tập lệnh đó để có ý tưởng về cách tấn công nó. Đôi khi bạn chỉ có thể xây dựng một dự án Xcode thư viện tĩnh, đổ tất cả các tệp vào nó và nhấn xây dựng. Nếu xây dựng là đơn giản, nó sẽ làm hầu hết các công việc cho bạn.

Tôi biết việc sử dụng của bạn không quan trọng, nhưng các công cụ dựa trên Lua thường có thể chuyển đổi được trên cửa hàng ứng dụng. Bạn chỉ không thể tải xuống mã tùy ý khi chạy và giải thích nó.

+9

đó là Lua, chứ không phải LUA. Và nó không sử dụng autoconf, btw – Javier

+5

Cảm ơn bạn rất nhiều, biên dịch cho ARM đã làm việc. Tất cả những gì tôi đã làm là ném thư mục src vào một dự án Xcode, tạo một thư mục tĩnh, và đặt tất cả .h và.c tập tin trong thư mục Compile Sources của mục tiêu, và tôi có thư viện làm việc của mình. – InFreefall

+0

Bạn có thể muốn làm cho liên kết tải xuống hiển thị nhiều hơn một chút :) Nếu không, cảm ơn! –

14

Bạn có thể muốn xem iPhone Wax. Nó là một cây cầu lua/iPhone cho phép bạn viết các ứng dụng iPhone bản địa trong lua thuần túy! Đây là một good tutorial đẹp về nó.

4

Nếu bạn muốn viết mã Lua dành cho iOS, sau đó kiểm tra Moai ngay lập tức: http://getmoai.com/

nó một khuôn khổ hoàn toàn thú vị để phát triển trò chơi trên iOS và Android, cũng như Windows và OSX. Không chỉ vậy, nhưng nó cung cấp một ý tưởng khá tốt về cách thực hiện đúng môi trường lưu trữ dựa trên Lua-VM cho kịch bản theo cách đa nền tảng: từ MOAI, bạn có thể học được rất nhiều về điều này. Tôi đã thực hiện 4 danh hiệu với MOAI cho đến nay, và sẽ không dừng lại bất kỳ thời gian sớm .. MOAI hoàn toàn đá ass!

Ngoài ra kiểm tra LOAD81, mà là một nỗ lực tương tự mặc dù với SDL như môi trường mục tiêu: http://github.com/antirez/load81

(tôi đã đóng góp một chút để các dự án LOAD81, đặc biệt là cho nó có tính năng hấp dẫn/giá trị cho OpenPandora MOAI thương mại hơn, LOAD81 nhiều người thích chơi đùa ..)

Đối với những người đang cố gắng tìm hiểu Lua và các phương pháp tích hợp Lua VM khác nhau trong một dự án cho nhiều mục tiêu nền tảng, cả MOAI và LOAD81 có thể cung cấp rất nhiều nền tảng và manh mối về đúng cách để tiến hành.