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
出來的,供大家參考。