lua核心使用
c語言,所使用的函式也只有標準
c,並且沒有全域性變數。對於大部分作業系統來說,移植所要做的事情很少。而移植到
mtk平台則要注意以下幾點: 1.
記憶體分配。
lua使用malloc
、realloc
、calloc
等函式來分配記憶體,而
mtk平台下不能使用這些函式,而是使用
oslmalloc
等函式代替之。其它的分配記憶體函式包括以下:
#define media_get_ext_buffer(src_mod_id, buffer_p, buffer_size)/
media_get_ext_buffer_ext(src_mod_id,buffer_p, buffer_size,__file__,__line__)
#define media_get_int_buffer(src_mod_id, buffer_p, buffer_size)/
media_get_int_buffer_ext(src_mod_id,buffer_p,buffer_size,__file__,__line__)
#define media_free_int_buffer(src_mod_id, buffer_p)/
media_free_int_buffer_ext(src_mod_id, buffer_p, __file__, __line__)
#define media_free_ext_buffer(src_mod_id, buffer_p)/
media_free_ext_buffer_ext(src_mod_id, buffer_p, __file__, __line__)
mmi_frm_scrmem_alloc() 2.
檔案操作。
fopne
、fread
、fwrite
、fclose
等函式也不要使用,用
fs_open
、fs_close
、fs_read
、fs_write
等函式代替之。
3.訊息(事件)傳遞。
手機上的訊息要傳給
lua,包括按鍵訊息、
timer
訊息、socket
訊息。
int(*func)(
void
*pthis,
intevttype,
uint32
param1,
uint32
param2);
lua_state*l;
void
key1downhandler()
void
key2downhandler()
void
key3downhandler()
...................
void
keyrskdownhandler()
void
keyrskuphandler()
typedef
struct
mtk_key_event
mtk_key_event;
const
mtk_key_eventeventhandlers=
, , ,
................... ,
, };
void
lua_set_key_handler(
void)
for(i=0;i<
sizeof
(eventhandlers)/
sizeof
(eventhandlers[0]);i++) }
intmy_event_handler(
void
*pthis,
intevttype,
uint32
param1,
uint32
param2)
case
init:
//todo:otherevent }
return
1; }
unsigned
intlua_event_handler(lua_state*l,
intevttype,
uint32
param1,
uint32
param2)
ret=(unsigned
int)lua_tonumber(l,-1);
lua_pop(l,1);
return
ret; }
4。初始化以及退出
intinit()
intfini()
移植 Lua 到嵌入式平台 OMAPL138
lua 是十分小巧精簡的,編譯安裝也是很簡單。先來看下在 x86 ubuntu 上的編譯安裝 curl r o sudo apt get install libreadline dev tar xf lua 5.3.5.tar.gz cd lua 5.3.5 make linux test sudo...
移植程式到symbian平台
symbian平台理論上可以平移標準的c c 語 言程式,以及標準庫。只需要在mmp檔案中進行如下編寫 target hello.exe targettype exe uid 0 sourcepath source slhello.c systeminclude epoc32 include lib...
gloox移植到android平台
最近需要在android平台是使用gloox,官方gloox沒有沒有對應的android.mk檔案,那當然也可以用android ndk來編譯,但是我覺得用ndk編譯有點麻煩,就寫乙個android.mk來使用mm編譯。首先,進入src目錄,configure該專案 configure host a...