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是不错的选择。同时,还介绍了其他开源的大数计算库,供读者参考。