lua調用c編譯so
A. 小白求助,安卓上怎麼運行lua腳本
在Android手機上編寫並運行Lua腳本
利用開源項目SL4A ( Scripting Layer for Android 項目地址:可以快速在Android手機上搭建各種腳本運行環境。目前SL4A支持 Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, shell 等腳本語言 。
1、下載並安裝SL4A運行環境
這個應用提供了各種腳本的運行環境,通過拆APK可以看到應用內嵌了兩個.so動態鏈接庫。其中一個是ConnectBot的庫,另一個是7.9K大小的腳本執行庫,但顯然不是腳本語言解析庫。具體關於SL4A的原理,可以參考博文:《SL4A 之實現原理解析》
2、下載 Lua for android 支持lua_for_android_r1.apk
3、運行Lua for android ,它將從網路下載一些Lua腳本Demo。這些例子在SL4A中運行。
使用SL4A可以在Android手機上直接運行Lua等腳本。
B. 在android下使用lua,lua調用c++編譯好的so里的一個函數,這個函數又調用lua里的一個函數。
沒聽說過lua入棧太多自動彈出棧的功能,只碰到過超過設定的堆棧最大層數提示too many nested functions或者stack overflow。樓主的提示在lua源碼里也沒搜到。
C. Lua如何進行大數運算(附源碼)
在游戲伺服器開發中,大數計算是常見但難以避免的問題。一般數值計算在math.maxinteger范圍內可直接使用Lua常規計算,超出范圍則需大數計算。本文介紹了兩種基於Lua的大數計算庫:基於Boost的Lua庫和基於GNU bc的Lua庫lbc。
基於Boost的Lua庫通過安裝Lua、Boost和GCC,編譯生成Lua直接引用的so庫。編譯方式有正常編譯和捆綁編譯。捆綁編譯通過make_boost.sh腳本將boost文件復制到boost文件夾,簡化編譯過程。但需要注意,捆綁編譯可能不適用於最新版本的boost。
基於GNU bc的Lua庫lbc由Lua的作者之一編寫,具有簡單、小巧、易用等特點。編譯簡單,幾乎只需執行make。測試結果顯示,lbc在1000位字元的數字上,執行加減乘除各一次,其時間在1秒以下,符合要求。
本文還介紹了基於MAPM的Lua庫lmapm,其特點與lbc類似。兩種庫在測試中表現穩定,但lbc提供了詳細的位數信息,而lmapm採用科學計數法表示結果。
最後,本文建議根據實際需求選擇合適的大數計算庫。對於簡單、方便、源碼、可修改、可移植和精度要求較高的項目,lbc是不錯的選擇。同時,還介紹了其他開源的大數計算庫,供讀者參考。