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 
#include 
#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.c

xcrun -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);

执行结果如图
ios平台触动精灵lua调用C语言_第1张图片

参考资料

[1]Lua 在移动平台上的应用
[2]Mac平台中编译安装Lua运行环境及Hello Lua实例
[3]和我一起写lua - Mac OS X环境编译C模块
[4]触动精灵开发手册-版本 2.2.5

你可能感兴趣的:(游戏脚本,ios平台,lua,c语言,触动精灵)