luaスクリプトの呼び出しかた

nuwikiがどうにも調子悪いのでこちらに引っ越し。

最初のサンプルは、luaスクリプトをCから実行する方法。

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()で充分。