C++とLuaのバインドで問題が発生しました。Luaにシンプルなクラスシステムを実装しました。これにより、別のluaファイルからluaクラスの「インスタンス」を作成できます。
require 'classname'
m_newObj = classname() --"classname() creates a new instance
次に、m_newObjの関数にアクセスできます。
m_newObj:functionname(parameter)
これは完全に正常に機能しますが、C++コードからluaクラスのインスタンスにアクセスできるようにしたいと思います。
通常、C++でlua関数へのアクセスを作成するには
lua_State* pL = luaL_newState();
...
lua_getglobal(pL, "functionName");
lua_call(pL,0,0);
ただし、これはluafile内の関数を呼び出すだけであり、「クラス」の特定のインスタンスでその特定の関数を呼び出すことはありません。
だから基本的に私がやりたいのは
- C++でluaクラスのインスタンスにアクセスする
- 特定のインスタンスで関数を呼び出す
これを実行したい理由は、パフォーマンスでは、C++でlua関数を使用するよりもluaでC++関数を使用する方がはるかに多くのことが必要であるため、luaコードがなくてもluaを使用してエンティティを拡張できるようにするためです。多くのC++関数を呼び出すluaのC++クラスにアクセスする代わりに、C++のluaクラスにアクセスする必要があります。