問題タブ [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.
c++ - Luabindを介してSTLキューをLuaに公開する
Luaで記述されたキュークラスの既存の実装をSTLキュークラスに置き換えようとしています。なぜこれが失敗するのか、またはそれを修正する方法がわかりません。以下は、エラー出力とともに同じ動作を示すサンプルコードです。前もって感謝します!
そしてgcc出力:
c++ - luabind0.9.1イテレータは常に最後のオブジェクトのみをポップします
すべて。luabindを使用してluaスクリプトから配列を読み取ると、奇妙な問題が発生しました。
luaスクリプトは次のようになります。
c++コードは次のようになります。luabind::objectdata_root = luabind :: globals(L)["root"];
出力は次のとおりです。
[root]のすべての要素を出力したいのですが、最後の1つ以上しか出力しません。
ありがとう、ジェイソン:)
c++ - 関数ポインターへの C++ クラス メンバー関数ポインター
lua to C++ ラッパーとして luabind を使用しています。Luabind は、独自のコールバック関数を使用して lua によってスローされた例外を処理する方法、set_pcall_callback() を提供します。そこで、ドキュメントの例を言い換えました。変更は logger->log() 関数であり、関数を「Engine」というクラスに配置したため、通常のグローバル関数ではなく、メンバー関数になりました。私の問題があるようです。
関連するコードスニップは次のとおりです。
コンパイル中にコンパイラが言うことは次のとおりです。
したがって、エラーは、関数がクラスメンバー関数ポインターではなく、通常の関数ポインターを期待していることです。中間関数ポインタをキャストまたは使用して set_pcall_callback() 関数に渡す方法はありますか?
ありがとうございました!
c++ - C++がlua例外をキャッチしない
luabindを使用してLuaにバインドしたC++プログラムがあります。私は現在、luaスクリプトのデバッグを支援するためにluaとluabindが提供しなければならないエラー処理方法をテストしています。目的は、構文エラーやプログラミングミスが発生したときにluabindまたはluaに例外をスローさせて、それらをデバッグおよび修正できるようにすることです。
現在のところ、問題は、エラーメッセージや例外がスローされることなく、以下のスクリプトの実行が停止することです。したがって、より大きなプログラムでは、問題がどこにあるのか、そもそも問題があったとしてもわかりません。
関連するスニペットは次のとおりです。
Lua:(start.lua)
C ++:
実行時の出力は次のとおりです。
予想どおりに例外をスローする代わりに、スクリプトの実行が停止します。luaがいつ例外をスローするかを制御する方法や、エラーを処理する別の方法はありますか?デバッグ情報を生成するようにロギング関数を設定していますが、ブレークポイントにより、上記のcatchステートメントが実行されていないことがわかります。
ありがとうございました!
luabind - エクスポートされた関数のパラメーターとしての lua-function
このように lua 関数をメインの C++ プログラムに送信することは可能ですか?
それとも、このように?
そして、メインプログラムからどのように呼び出すのですか? 可能であれば、同じ方法で lua テーブルを使用してください。つまりexported_function(table);
?
c++ - luabindがクラスをインスタンス化する方法を理解するのに助けが必要
私がこのようなクラスを持っているとしましょう:
そして、次のようにLuabindを介してLuaに公開します。
そして最後に、次のようなスクリプトでインスタンス化します。
その時点でのAの実際の「存在状態」は何ですか?
それはヒープのどこかにあり、luaはそれへの参照をどこかに保持していますか?(またはluabind :: object?)
newまたは同等のものによって割り当てられたように、それはポインタにしかなり得ないような気がします。
ただし、参照を受け入れる関数をluaにバインドすることはできます。たとえば、最終的にlua_doSomething(A & a)
は実際の参照になります。確かに、これは非常にうまくいく可能性があることを私は知っていますが、それがどのa
ように行わ*a
れるのかはわかりません。
私がこれを求めている理由は、スクリプトでインスタンス化されたオブジェクトの存続期間を少しでもよく理解して予測するためです。
それと、上記のようにクラスをluaに公開する代わりに、所有権や存続期間が変更されるかどうかわからない場合は、次のようにします。
そしてそれを次のように使用する
これまでに理解したロジックでは、luabindのこのような割り当てがバインドされたコンストラクターで行うのと同じでない限り、私が新しいオブジェクトを割り当てるため、この場合はクリーンアップを行う必要があります。
要するに、私はオブジェクトの存続期間などについて本当に混乱しています...これに関連するキーワードをグーグルで検索しましたが、 http: //www.gamedev.net/topic/525692-luabindのようなものしか取得していません-所有権と破壊/
それは私が知りたいことではありません。割り当て、インスタンス化、ライフタイムなど、舞台裏で物事がどのように処理されるかを具体的に理解したいと思います。
windows - Windowsでのluabindインストールの問題
カントビルドluabind。Boostとbjam.exeをダウンロードしました。Windowsでの経験はありますか?このライブラリをどのように使用できますか?ありがとう。
lua - luabind::object の奇妙な問題
公式リリースは古く、boost の最新バージョンではコンパイルされないため、現在 luabind、具体的にはhttps://github.com/rpavlik/luabindを使用しています。
ネット上のどこにも見つからない、非常に奇妙な問題が発生しています。ケースを非常に単純なシナリオに減らすことができました。
1 つのモジュールには、次のものがあります。
別のモジュールでは、次のようになります。
lua から functionA と functionB を使用できるようにして、それらを連続して呼び出すと、出力は次のようになります。
ご覧のとおり、オブジェクトはまだ luabind が出力できるものを参照しています。しかし、それをスタックにプッシュして、スタック オブジェクトから新しいオブジェクトを作成しようとすると、値が nil になります。
これは、この特定のケースでのみ発生します。すべてを 1 つの関数に入れると、問題なく動作します。コードを同じモジュールの関数に入れると、正常に動作します。私はまだスタンドアロンのテスト プロジェクトを作成していませんが、コード内で干渉するものは何も考えられません。関数は lua から直接連続して呼び出されます。
私は何か間違ったことをしていますか?それともこれはバグですか?もしそれがバグなら、なぜ私はこのようなことを聞いたことがないのでしょうか?
c++ - luabind 0.9.1 は stl イテレータを使用し、1 つの要素のみを表示します
luabind を使用して stl::vector::iterator を lua スクリプトに返すときに奇妙な問題が発生しました。
以下はコードです:
1) lua スクリプトによって呼び出される 2 つの関数を作成しました。
2) 関数を lua にバインドします
3) 以下のようなスクリプトを実行します。
4)結果は次のとおりです。出力ウィンドウには、次のように表示されます。
そして、プログラムは luabind/policy.hpp:754 で壊れています
std::vector のすべての要素を表示したいのですが、最初の要素しか表示されずにクラッシュします。
どうもありがとうございます!:)
ジェイソン