入門Luaプログラミング第11章 C言語との連携
C言語とLuaの連携などなど。スタックの説明のあたりがさっぱりだったのでそこは後で……
C言語の自作関数をLuaから使う
C言語側で作った自作関数を登録してLuaから呼ぶ。
最初にC言語本体を。
/* aaa.c */ #include <lua.h> #include <lualib.h> #include <lauxlib.h> int aaa(lua_State* L) { lua_pushnumber(L, 12); lua_pushnumber(L, 24); return 2; } int main(void) { lua_State* L = luaL_newstate(); luaL_openlibs(L); lua_register(L, "aaa", aaa); luaL_loadfile(L, "aaa.lua") || lua_pcall(L, 0, 0, 0); lua_close(L); return 0; }
で、コンパイル。(環境:MacOS 10.6.5 / gcc 4.2.1 / Lua 5.1.4)
$ gcc -I./lua-5.1.4/src/ -L./lua-5.1.4/src/ -o aaa aaa.c -llua
-- aaa.lua i, n = aaa() print(i) print(n)
これを実行すると……
$ ./aaa 12 24
という感じ。こんなに簡単にLuaインタプリタを組み込めるなんて……