問題タブ [luabind]

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 に答える
152 参照

lua - メインテーブルの下にあるテーブルパラメータを反復するにはどうすればよいですか?

luaでは、内部的に多くのパラメータを含むテーブル変数を返す関数を呼び出しています..しかし、その値を取得すると、テーブルに存在するパラメータにアクセスできませんでした。元の関数のテーブル パラメーターは、次の形式で表示されます。

[[table:0x0989]] { [[table:0x23456]] str = "hello" width = 180 }, [[table:0x23489]] { str1 = "world" }

このように表示されますが、一度戻ると [[table:0x0989]] のようなテーブルのトップアドレスを取得できます..メインテーブル内に存在するテーブルにアクセスしようとすると、nil値が表示されます…なんて呼べばいいの?? 誰でも私を助けることができますか??

0 投票する
3 に答える
1784 参照

parameters - luabind-可変数のパラメーター

可変数のパラメーターを受け入れる関数をluabindにバインドするにはどうすればよいですか?基本的に、私は自分のprint()関数を書きたいと思っています。

パラメータとしてのluabindのクラスは、任意のデータ型を受け入れることができることを知っています。パラメータとしてのobject動的テーブルを受け取るのが最善です。luabind::object

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

c++ - Luabind: "一致するオーバーロードが見つかりませんでした。候補:"

回答を読んで適用したことに注意してください: Luabind から C++ メンバー関数を呼び出すと、「一致するオーバーロードが見つかりません」が発生しますが、これで問題は解決しませんでした。

luabindを介してLUAに公開する単純なクラスがあります

バインディング コードは次のとおりです。

そして、ここに私のLUAがあります:

しかし、タイトルに記載されているエラーが発生します(これはログファイルから直接取得したものです):

私はこれで髪を引き裂いてきましたが、何が間違っているのかわかりません。誰でも光を当てることができますか?! :)

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

c++ - Luabindクラスでの新しいプロパティの作成を防ぐにはどうすればよいですか?

私はLuabindを使用してC++クラスをLuaにバインドしています。Luaスクリプトから、クラスを表すテーブルに任意のプロパティ(キーと値のペア)を追加できます。Luabindにこれらのプロパティが存在することを伝えたことがない場合でも、次のようになります。

カバのラインは無意味ですが、Luaエラーを発生させることなく実行されます。

これらの新しいプロパティを防ぐにはどうすればよいですか?Lua C APIのみを使用する場合、これは__newindexメタメソッドを使用して実行できることを知っていますが、Luabindでこれを行う方法はありますか?

0 投票する
2 に答える
639 参照

c++ - Luabindでのアサーションの失敗

現在、Luabindを使用してLuaスクリプトAIをC++ゲームとインターフェースする際に問題が発生しています。

ループ内で更新関数を呼び出し(フレームごとに1回)、この関数はLuabindに登録されているC++関数から情報を取得します。

私の問題は次のとおりです。変動する予測不可能な時間が経過した後、Luabindでアサーションが失敗し、アサーションが発生します。Lua内を下降している間、エラーは常に/usr/include/luabind/wrapper_base.hpp:124で発生します。

あなたはそれを何ができるかについて何か考えがありますか?私のテストでは、C++とLUAで呼び出される関数は常に同じです。

問題の詳細:

wrapper_base.hppで失敗したアサーション周辺のコンテンツ

正確なエラー

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

c++ - C ++では、luabindを使用して、luaファイルで定義された関数を呼び出しますか?

私がluaファイルを持っているとしましょう:

luabindを使用してそのファイルをロードし、その関数を呼び出すにはどうすればよいですか?次のようになります。

しかし、これはエラーを返します: 'luabind :: error'のインスタンスをスローした後に呼び出された終了what():luaランタイムエラー中止

それで、私がやりたいことをするための適切な構文は何ですか?(エラーの見た目からは、luaファイルの構文に問題があるようですが、そうではないと思います...)

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

lua - ルバインドとコルーチン

luabind でコルーチンを適切に使用する方法を理解するのに苦労しています。テンプレート化された関数があります:

( ) には、LuaRetから渡された値が含まれているはずです。yield

私の現在の混乱のポイントは次のとおりです。

  • 関数が を呼び出すのではなく、返された場合はどうなりますyieldか? resume_function関数の戻り値を返しますか?
  • どの (またはいくつの) パラメータが に渡されるか事前にわからない場合、この関数をどのように使用することになっていますyieldか? たとえば、可能性のある生成関数が複数ある場合、その関数は呼び出すことができます。
  • Retに複数の値が渡された場合の型はyield?

これがどのように機能するかについて、私は完全に間違っていますか?このようなことを想定しています。Lua 側:

loadImageは、画像を別のスレッドにロードするように要求してから を呼び出す C++ 関数でありlua_yield、しばらくして でパラメータとしてluabind::resume_function呼び出さimgれます。

パラメータとして渡す必要が"foo.png"ありますか?yieldを呼び出す前に別の関数に変更し、その後は?yieldに値を渡さないでください。yieldこれを構造化する正しい方法は何ですか?私は明らかにここで何かを誤解しています。

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

c++ - luabind 派生メンバーをコルーチンとして呼び出す

luabind のドキュメントには、Lua 派生の仮想メンバーを C++ から呼び出すように記載されています。派生したラッパー クラスを作成し、次luabind::wrap_baseのように関数を呼び出します。

これまでのところとても良いです-私はこれだけ働いています。

しかし、(Lua 側で)BaseWrapper::foo()オーバーライドされたものを で直接呼び出すのではなく、( を使用して)コルーチンとして呼び出すように実装するにはどうすればよいですか?fooresume_functioncall

これは、非メンバー関数で行う方法です。

私が知る必要があるのはfuncfoo(Lua 派生クラスによって実装されているように) 取得する方法であり、既存のresume_functionロジックはそのまま機能するはずです。

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

c++ - オーバーロード関数と luabind に関する問題

lua にバインドしたいクラスがあります。削減されたコードは次のようになります。

コンパイルしようとすると、コンパイラがスローしてエラーが発生します。

問題の原因は、luabind が最適なオーバーロード関数を推測できなかったことだとわかっていますが、luabind のドキュメントを読んで、luabind で関数を正しく定義しています。

何か案は?

前もって感謝します

0 投票する
2 に答える
192 参照

c++ - このスクリプトは非常に多くの閉鎖をもたらしますか? はいの場合、代替手段は何ですか?

Lua で GUI メッセージ処理システムを実装したいのですが、現在は次のように機能します。

C++ コードでは、ウィンドウには Windows API にあるようなウィンドウ プロシージャがあり、Lua でもこれに頼ろうとしています。

したがって、私のウィンドウにはluabind::object、次のようなテーブルを指す があります

表の鍵は GUI メッセージです。Ele はウィンドウのハンドル、a はメッセージ、b と c はパラメーターです。

いくつかの関数の例です。

次のようにオブジェクトにバインドされます。

これはすべて同じスクリプト ファイル内にあり、(私の知る限り) ロード時に 1 回だけ実行されます。したがって、最初にテーブルが構築され、後でテーブルが にバインドされますluabind:::object。このオブジェクトは、次のように C++ で呼び出されます。

したがって、メッセージが発生するたびにテーブルが呼び出され、毎回関数が返されると思います。スクリプト ファイルを 1 回だけロードしても、スクリプトをデバッグしてそこにブレークポイントを配置すると、アクション オブジェクトが呼び出されたときにブレークポイントがヒットするため、これを想定しています。

それは物事を処理する良い方法ですか?