Hello Lua
そうだ、スクリプトを使おう、と思い立ちました。
まず思いついたのは今流行りのRubyでしたが、
組み込んで使うとなるとライセンス的にどうなのかな、
という感じがしたので、Luaを検討しました。
ポイント
- 組み込みやすい
- LuaComを使えば、COMも使える
- 無名関数が使える
- 強力なテーブル型
- 連想配列が使える
LuaComの注意
LuaComでは、MSVCでそのまま使うとメモリリークが発生するようです。
ソースを見て見ると、クリーンアップ関数であるluacom_cleanから呼び出されているLuaBeans::Clean()メソッドの処理が足りないようでした。
変更前のLuaBeans::Cleanメソッド
void LuaBeans::Clean() { free(LuaBeans::tag_name); free(LuaBeans::udtag_name); }
変更後のLuaBeans::Cleanメソッド
void LuaBeans::Clean() { if ( module_name ) { free( (void* )module_name ); module_name = NULL; } if ( tag_name ) { free( tag_name ); tag_name = NULL; } if ( udtag_name ) { free( udtag_name ); udtag_name = NULL; } }
こうすると、メモリリークが発生しなくなりました。
参考資料