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