閱讀475 返回首頁    go 阿裏雲 go 技術社區[雲棲]


lua與C(二):LUA調用c

在lua中調用C函數

 

 c中的函數應該這樣準備

 注冊單個函數:

  所有可被lua調用的函數型為 typedef int (*lua_Cfunction)(lua_State*L)

  例如

其中返回值是其壓入棧的函數返回值的數量

2.然後將函數置入棧中 lua_pushfunction()

3.將函數從棧中推給lua  lua_setglobal(L,name) name是在lua中這個函數的名字

 

注冊一些函數,組成一個模塊

1.首先定義這些函數

static int l_dir(lua_State*L){}

2.聲明一個數組 包含模塊中所有的函數及名稱,數組元素類型為struct luaL_Reg

static const_struct luaL_Reg myLib[]={

{"lua中是函數名",c中的函數指針},

..

必須以{NULL,NULL}結尾

}

3.聲明一個主函數

int luaopen_mylib(lua_State* L){

 luaL_register(L,"luamyLib",myLib)

return1

}

這樣就創建了一個table luamyLib包含myLib裏的所有函數

 

4.如果將c程序編程動態鏈接庫,在lua中通過require("庫名稱")來得到這個table

 

 

 

最後更新:2017-04-02 16:48:11

  上一篇:go Tomcat集群Cluster實現原理剖析
  下一篇:go android Bitmap用法總結