nuwikiがどうにも調子悪いのでこちらに引っ越し。
luaスクリプトは以下の通り。Hello!という文字列を表示するだけの単純なもの。
-- ex1.lua print ("Hello!")
luaスクリプトを呼び出して実行するCのコードは以下の通り。
// ex1.c #include <stdio.h> #include <lua.h> #include <lualib.h> #include <lauxlib.h> int main (int argc, char* argv[]) { lua_State *lua; lua = lua_open(); luaopen_base (lua); luaL_dofile (lua, "ex1.lua"); lua_close(lua); return 0; }
これをコンパイルする。
gcc -o ex1 ex1.c /usr/local/lib/liblua.a
luaのヘッダやライブラリは /usr/local 以下にインストールしてあると仮定している。プラットホームによっては -lmなんか付ける必要があるかも。
実行結果はこうなる。
% ./a.out Hello!
luaL_dofile()でスクリプトを開いて評価するわけだけども、スクリプトが開けなかったときやスクリプトに間違いがあったときはCのプログラムが停止してしまう。これでは業務用のソフトウェアでは困ってしまうが、luaL_dofile()は一連のマクロなのでopenや実行チェックなどを自力で実装すればそういう問題は解消できる。実験用途ではluaL_dofile()で充分。