*.luaソースや.luaのモジュールを、C言語ソースへ変換 [#a60131e6] **LOOP Precompiler and Preloader (Lua5.1用) [#t42e4399] -常時利用する.luaファイルは、別ファイルとして持っておくのではなく、~ C側に取り込んでしまいたいものです。~ ~ そのような時、[[LOOP Precompiler and Preloader>http://loop.luaforge.net/release/preload.html]]が活躍します。~ ~ -Pre-Compilation~ luaソースをluaとしてコンパイル(チャンク化)し、そのバイトコードの並びを元にC言語のソースを生成します。~ 一度チャンク化しますので、luaソース内にコメントなどが書かれていても影響しません。~ ~ -Pre-Loading~ 複数の依存した.luaファイルをコンパイルしたものを実行する際には、~ どのモジュールを先に実行しなければならないか、~ という問題があります。~ .luaでいう #sh(lua){{ require "hogehoge" }} というものを実行するためには、すでにhogehogeに相当するものが''Luaステート上''に存在する必要があるからです。~ このような順番の問題を解決するためのツールがpreloader.luaです。 **bin2c (Lua5.0~Lua5.3) [#r20a7d1e] -このツールは、Lua5.0までは同封されていたツールとなります。 #sh(lua){{ luac script.lua -o script.luac bin2c script.luac > strict_code.c }} のように利用します。~ luacが無い環境の場合は、[[Luac]]のページを参照してください。~ ~ -bin2cが無い場合は、 #ref(http://lua.tips/download/tool/bin2c.lua)を利用してください。~ luac.luaやbin2c.luaを使った場合のコマンドは #sh(lua){{ lua luac.lua script.lua -o script.luac lua bin2c.lua script.luac > strict_code.c }} となります。 ~ C言語側で実行したい行で、出力されたCソース(先述の例ならstrict_code.c)をインクルードします。