1. 背景
不知LuaJit
的应该很多,但知道cocos2d
应该很多。我初听LuaJit
还是有从一前辈口中得知,当时只听了大概原理。简单来说就是用C
来封装核心库,用Lua
脚本来写业务,这个在做游戏方面很适用,同时我觉得也很适用需求更新较快的业务。
听得就很让人动心,对于现在的一些业务,核心功能也是封装起来的,但没有完全独立出来,有时需要改一个指标你就需要去改那部分代码再编译,不同的项目可能需要不同的指标,这样到最后核心库就会产生各种各样的版本,从而不利于维护。Lua
脚本只提供驱动将你各个功能模块组织起来,不过同时它也会要求你的库能高度封装起来。
2 试用FFI
FFI
我就不再赘述了,请看官网,如果没有看懂没关系,我们直接看代码
2.1 代码
// so_test_a.c 代码
#include <stdio.h>
void print_test_a()
{
printf("hello lua from c\n'");
}
--- main.lua 脚本
local ffi = require("ffi")
local C = ffi.load('Test')
ffi.cdef[[ void print_test_a(); ]]
C.print_test_a()
2.2 编译运行
# 编译C代码,本人的环境是 mac,如果您是linux,请改用--shared
gcc -c -g -O0 -Wall -I./ -o so_test_a.o so_test_a.c
gcc -dynamiclib -g -O0 -Wall -o libTest.dylib so_test_a.o
#用luajit执行脚本
luajit main.lua
2.3 运行结果
运行结果就不必说,必须打印出
hello lua from c
3. 总结
这个看起来其实是挺简单的,可资料较为缺乏,一点点Google
出来的,供大家参考。