LuaStickを使ってLuaとC++をバインドする
LuaStickはWindows上で動作する、LuaとC++をバインドするコード生成プログラムです。
C++の関数・クラス・列挙等の直前に
/// <stick export="true" />
を書くだけでLuaにエクスポートできます。
元々Dynamic DrawとLuaをバインドするために書いたものですが、使い勝手が良いので最近公開しました。
LuaStickを使うことで以下が可能になります。
- C++上の関数、クラス、列挙等をLuaプログラム中で操作できるようになります。
- C++からLuaの関数を実行することができるようになります。
- Luaに公開されるC++の機能に関するマニュアルを自動生成します。
以下は、main.h のクラス'X'とメンバー関数'Func'をエクスポートする例です。
// main.h
/// <stick export="true" />
class X
{
/// <stick export="true" />
/// <param name="x" io="in" />
void Func(int x)
{
std::cout << x * 2;
}
};
main.h とLuaをバインドするためのコードを生成させるには、LuaStick.exeを以下のコマンドラインで実行します。
>LuaStick.exe -out Stick Sticklib.h main.h
実行の結果、LuaStick.exeは、Stick.h、Stick.cpp、Stick.htmlを生成します。
+--------------------------------+ Manual
| Application | +------------+ Generate
| | | Stick.html |<---------+
| +----------+ +----------+ | +------------+ |
| |Stickrun.h| |Sticklib.h|---|---+ |
| +----------+ +----------+ | | +--------------+ |
| +----------+ +----------+ | +------>| |---+
| | main.cpp | | main.h |---|---------->| LuaStick.exe |------+
| +----------+ +----------+ | | |---+ |
| | +--------------+ | |
| +----------+ +----------+ | Generate | |
| |liblua.lib| | Stick.h |<--|------------------------------+ |
| +----------+ +----------+ | |
| : +----------+ | Generate |
| |Stick.cpp |<--|---------------------------------+
| +----------+ |
+--------------------------------+
以下の main.cpp は、Luaのスクリプトからクラス'X'のインスタンスを作成し関数'Func'を実行します。
// main.cpp
#include "Stick.h"
int main()
{
Stickrun stickrun(luastick_init);
std::string lua_src =
"obj=X.New();"
"obj:Func(10);";
stickrun.DoString(nullptr, lua_src, "myscript");
}
<summary>
等のタグを記載することで、生成されるマニュアルのコンテンツを充実させることができます。
// main.h
/// <stick export="true" />
/// <summary>
/// クラスXの機能です。
/// </summary>
class X
{
/// <stick export="true" />
/// <summary>
/// クラスXのメンバー関数です。
/// </summary>
/// <param name="x" io="in">パラメーターxです</param>
/// <returns>xの2倍の値を返します</returns>
int Func(int x)
{
return x * 2;
}
};
詳しくはマニュアル、及びサンプル集をご覧ください。
ソースコードはこちらです。
Windowsのバイナリーはこちらからダウンロードできます。
Author And Source
この問題について(LuaStickを使ってLuaとC++をバインドする), 我々は、より多くの情報をここで見つけました https://qiita.com/hukushirom/items/d9f3e647f337cbdafae2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .