ios平台触动精灵lua调用C语言
随着移动设备的兴起,Lua 作为嵌入式脚本语言,由于其自身的特点及优势,在应用领域使用度越来越高。触动精灵是一个手机游戏辅助平台,可以在上面开发自动化游戏的脚本,编程语言为lua。调用C语言对lua进行扩展可以极大的扩展游戏辅助的功能。下面对最近在这个方面学习的进展做一下简单的总结。
Lua 基于寄存器设计,其代码按照“Clean ANSI C”的标准编写且是解释执行的脚本,可以在任何支持 C 的环境中运行,同时意味着,你可以随时更新它,完全绕开先编译再运行。IOS端lua调用C语言的形式是将C语言函数按照lua接口封装成.so动态库,然后由lua进行调用。
步骤为:
1. Mac系统下lua的安装配置
2. C语言函数封装
3. lua编写
Mac系统下lua的安装和配置
首先需要在Mac系统下安装lua。触动精灵lua core版本为5.2,这里我们安装5.2.1版本,下载地址为http://www.lua.org/ftp/lua-5.2.1.tar.gz
下载完成后,解压缩并进入到其目录下。lua支持的版本有
aix ansi bsd freebsd generic linux macosx mingw posix solaris
找到对应的系统版本,打开命令行,输入 “sudo make xxx”,xxx代表系统版本。make成功后,输入“make xxx install”。
在命令行输入“lua”,如输出了lua版本号,则表明安装成功。
C函数封装
在src目录下新建文件mt.c 输入代码如下
#include <stdio.h>
#include <stdlib.h>
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"/* 库 open 函数的前置声明 */
int luaopen_mt(lua_State *L);/* Function mt_hello_world* @return string "hello lua so,hello world"*/
static int mt_hello_world(lua_State *L)
{const char * name_str = "hello lua so,hello world";lua_pushstring(L, name_str);return 1;
}
//注册函数库
static const luaL_Reg mt_lib[] = {{"hello_world", mt_hello_world}, //定义lua函数名{NULL, NULL}
};
int luaopen_mt(lua_State *L)
{luaL_newlib(L, mt_lib);return 1;
}
命令行下执行:
xcrun -sdk iphoneos gcc -arch armv7 -arch armv7s -arch arm64 -miphoneos-version-min=4.3 -O3 -std=c99 -I/opt/theos/include/ -c -o mt.o mt.cxcrun -sdk iphoneos gcc -arch armv7 -arch armv7s -arch arm64 -miphoneos-version-min=4.3 -O3 -framework Foundation -framework UIKit -bundle -undefined dynamic_lookup -o mt.so mt.o
生成动态库文件mt.so
触动精灵调用.so的lua编写
新建test.lua如下
init("0", 0); --初始化local mt=require "mt"
dialog(mt.hello_world(),0);
执行结果如图
参考资料
[1]Lua 在移动平台上的应用
[2]Mac平台中编译安装Lua运行环境及Hello Lua实例
[3]和我一起写lua - Mac OS X环境编译C模块
[4]触动精灵开发手册-版本 2.2.5
ios平台触动精灵lua调用C语言相关推荐
- android桌面快捷方式lua,通过ADB启动触动精灵lua脚本
需求是这样的:在Android中启动lua脚本,该脚本是通过触动精灵来运行的. 在确保服务开启的情况下,触动精灵脚本可以通过音量键"-"来运行,所以就直接在Android中通过ad ...
- lua android弹窗关闭,安卓精灵lua调用pm指令实现清除App缓存,举个栗子的说
今天刚接触这玩意,试着写点Demo玩玩, 功能要求能自动登陆,在登陆前要先清空游戏的缓存数据,不然游戏就自动登陆了(无法切到账号输入窗口) 本想写图色脚本来实现吧,多种品牌的手机,多种模拟器,多种桌面 ...
- iOS平台app如何设置支持多语言
1.基本设置 第一步:先在Project的info里添加项目所要支持的语言 image.jpeg 如上点击"+"号会弹出所提供的语言,选择所需要的语言就可以了 image.png ...
- ios开发愤怒的小鸟的Lua语言:Wax框架详解(一)
核心提示:我们都知道Objective-C和Cocoa语言可以开发iOS应用,但是一年前,苹果决定在iOS系统上使用Lua语言.Wax框架的想法很简单:凡是Objective-C能做的,Lua也能做! ...
- 怎样上android官方下载,【图文教程】如何安装 iOS/Android(安卓)触动精灵?
iOS 注意事项 必须越狱. iOS12 及其以上系统只能安装专业版 arm64 版本客户端并且购买专业版授权,专业版授权和标准版授权不通用. iPhone 7 10 系统设备由于越狱问题无法使用触动 ...
- ios 检测是否联网_iOS 设备打开触动精灵提示“您的网络不给力哦,请检查您的设备是否联网”怎么解决?...
如果您打开 Cydia 显示"似乎已断开与互联网的连接"请查看:Cydia 提示无网络解决办法,安装乐网后 Cydia 添加 https://apt.abcydia.com 安装 ...
- 触动精灵和按键精灵哪个好,如何用按键精灵ios触动精灵及脚本写自动答题脚本...
答:都差不多,无非是键鼠图色功能,这些软件都具备!其它差异就看你对他们熟悉程序而选择了~~ 比如我经常用按键精灵 首选肯定是安卓按键! 答:不能! 答:只有越狱才有,越狱之后在Cydia搜索autot ...
- IOS 安卓 按键精灵 触动精灵脚本逆向解密
IOS 安卓 按键精灵 触动精灵 脚本逆向解密
- Lua与C语言的互相调用
本系列相关文章: Flutter 热更新及动态UI生成 Lua 15分钟快速上手(上) Lua 15分钟快速上手(下) Lua与C语言的互相调用 LuaDardo中Dart与Lua的相互调用 Lua底 ...
最新文章
- 10上wsl位置迁移_wsl的安装/升级笔记
- nginx 目录讲解
- Swagger如何访问Ocelot中带权限验证的API
- hdu 2188巴什博弈
- 图像分类数据集(Fashion-MNIST)
- eclipse反编译
- 坦克大战游戏java代码_Java实现坦克大战游戏的源码示例
- 酒店管理系统需求分析
- 计算机设置成一个网络,怎样将笔记本电脑设置成一个wifi热点
- 博士生DIY超级显微镜,直接看到原子
- 新手教程,网站建设第一步:织梦之家Dede程序的下载和安装
- 吕广渝:上帝视角看公司运营
- 提高数据存储效率的七个技巧
- 互联网医疗仅剩的平台型超级独角兽,微医如何冲出重围?
- 【招生目录】 2023年北京交通大学计算机学院博士研究生招生专业目录
- 图像四则运算(加减乘除)
- 生产者和消费者问题-----管程法
- BIOS自检与开机故障相关的详尽问答集
- python软件下载-Python编程软件下载
- CSP考试 202209-1 如此编码