問題タブ [luabridge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
340 参照

c++ - Luabridge バインディングのオーバーロードされた演算子

*/+- 演算子を実装する単純な vec3 クラスを作成しました。

次のような方法で、luabridge を介してこれらの演算子をバインドしたいと考えています。

そのため、次のように lua で関数を呼び出すことができます。

vec3 クラスの *operator にブレークポイントを配置するとヒットしますが、rhs フロートは未定義です。

lua コードを次のように変更すると:

次に、rhs vec3 も未定義です。そのため、引数が正しく渡されていないようです。

次に、登録を次のように変更しました。

しかし、vec3 のメンバー データ、つまり float 引数が未定義になりました。このブレークポイントを超えると、luabdridge は次の例外をスローします。

私が考えることができる唯一のことは、どういうわけか関数を正しく登録していないということです。

私の質問は次のとおりです。演算子を正しくバインドし、引数の型が正しいことを確認するにはどうすればよいですか?また、lua で正しく呼び出すにはどうすればよいですか?

0 投票する
1 に答える
1031 参照

c++ - LuaBridge または Lua を使用して C++ オブジェクトを Lua 関数に渡す

C++ から構築された大きなオブジェクト (Lua に公開したもの) があり、Lua で処理したいと考えています。

を使用して任意の単純型を Lua 関数 ( intstring)lua_pushintegerに渡すことができますlua_pushstringが、C++ クラスを渡すことはできません。lua_pushlightuserdataオブジェクトへのポインターをプッシュしようとしましたが、うまくいきませんでした。

どうやってやるの?それは可能ですか?

C++ で構築された特定のインスタンスを Lua に渡したいことに注意してください。コンストラクターを公開して、単純にクラスを使用できますが、クラスをシングルトンにする必要があります。これは受け入れられません。