初窺LuaJit中 --- 試用FFI

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章