1.はじめに
LuaとC/C++は非常に近く、LuaとC++の相互作用はLuaとCをベースにしています。
で述べたように、Luaプログラムを実行したり、Luaを呼び出したりするには、主に2つの方法があります。
* コマンドラインから "Lua "コマンドを実行します。
* Lua による C ライブラリ
今までは****の方法でやっていましたが、ゲームではLuaのCライブラリを使って実行するのがいいんです。
2.LuaのCライブラリ
LuaのCライブラリは、共有ライブラリとして呼び出すことができますが、Luaを共有ライブラリとしてコンパイルするのではなく、Luaのソースコードをすべて含めてゲームを開発するのが一般的です。 これは、Luaのプログラムが100K程度しかなく、ほとんどのコンパイラできれいにコンパイルできるためです。 また、Luaのソースを持つもう1つの利点は、Lua自体をいつでも拡張して、必要な機能を追加できることです。
LuaのCライブラリは多くのAPIを提供しています。
* グローバル変数の管理
* テーブルの管理
* :: 呼び出し関数
* :: 新しい関数を定義し、完全にCで実装することもできます。
* :: ガベージコレクタは、Luaが自動的に行うことができますが、多くの場合、すぐに実行されないので、プログラムのリアルタイム要件は、ごみコレクタ自体を呼び出します。
* Lua プログラムをロードして実行します。
* :: Luaで実装可能な機能は、LuaのC APIを使用して実装することができ、プログラムの高速化を最適化するのに便利です。 頻繁に呼ばれるLuaのプログラムフラグメントをC言語に変換することで、効率化を図ることができます。 LuaだってC言語で書かれているのに、C言語では何ができないの?
3.LuaとC言語の統合例
例 e10.c
/* A simple Lua interpreter. */ 
#include 
#include 
int main(int argc, char *argv[]) { 
char line[BUFSIZ]; 
lua_State *L = lua_open(0); 
while (fgets(line, sizeof(line), stdin) != 0) 
lua_dostring(L, line); 
lua_close(L); 
return 0; 
} 
しゅうせん
Linux/Cygwin
* まずLuaをコンパイルし、ヘッダファイルをインクルード・パスに入れてください。
* gcc e10.c -llua -llualib -o e10
VC6/VC0023
* まず Lua をコンパイルし、Option でヘッダファイルやライブラリのパスを設定します。
* :: 新規プロジェクトを作成し、プロジェクト構成に追加ライブラリ lua.lib と lualib.lib を追加します。
* :: exeへのコンパイル
走行結果
このプログラムの機能はLuaインタプリタを実装することで、入力された各行をLuaに解釈して実行します。
手続きの説明
* includeはluaヘッダファイルをインクルードします。
* Lua_State *L = lua_open(0) Luaの実行ファイルを開きます。
* fgets(line, sizeof(line), stdin) 標準入力から行を読み込みます。
* :: lua_dostring(L, line) 行を実行します。
* :: lua_close(L)はLuaエクゼキュータを閉じます。
例 e11.c
           /* Another simple Lua interpreter. */ 
#include 
#include   
#include   
int main(int argc, char *argv[]) {   
char line[BUFSIZ];   
  lua_State *L = lua_open(0);   
lua_baselibopen(L);   
lua_iolibopen(L);   
lua_strlibopen(L);   
lua_mathlibopen(L);   
while (fgets(line, sizeof(line), stdin) != 0)   
lua_dostring(L, line);   lua_close(L);   return 0;   } 
走行結果
このプログラムの機能はLuaインタプリタを実装することで、入力された各行をLuaに解釈して実行します。
前の例とは異なり、この例ではLuaの標準ライブラリをいくつか呼び出しています。
手続きの説明
* #include Luaの標準ライブラリを含みます。
* 以下の行は、Luaのライブラリを読み込むために使用されます。
lua_baselibopen(L).
lua_iolibopen(L).
lua_strlibopen(L).
lua_mathlibopen(L).
4.お試しください。
上記の2つの例を使い慣れたコンパイラでコンパイルし、Luaのソースツリーでコンパイルしてみてください。





