初窥LuaJit中 --- 试用FFI

来源:互联网 发布:医美网络咨询师好做吗 编辑:程序博客网 时间:2024/06/05 16:26

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,请改用--sharedgcc -c -g -O0 -Wall -I./  -o so_test_a.o so_test_a.cgcc -dynamiclib -g -O0 -Wall -o libTest.dylib so_test_a.o#用luajit执行脚本luajit main.lua

2.3 运行结果

运行结果就不必说,必须打印出

hello lua from c

3. 总结

这个看起来其实是挺简单的,可资料较为缺乏,一点点Google 出来的,供大家参考。

0 0