問題タブ [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 投票する
3 に答える
575 参照

c++ - Luabindを介してSTLキューをLuaに公開する

Luaで記述されたキュークラスの既存の実装をSTLキュークラスに置き換えようとしています。なぜこれが失敗するのか、またはそれを修正する方法がわかりません。以下は、エラー出力とともに同じ動作を示すサンプルコードです。前もって感謝します!


そしてgcc出力:

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

c++ - luabind0.9.1イテレータは常に最後のオブジェクトのみをポップします

すべて。luabindを使用してluaスクリプトから配列を読み取ると、奇妙な問題が発生しました。

luaスクリプトは次のようになります。

c++コードは次のようになります。luabind::objectdata_root = luabind :: globals(L)["root"];

出力は次のとおりです。

[root]のすべての要素を出力したいのですが、最後の1つ以上しか出力しません。

ありがとう、ジェイソン:)

0 投票する
4 に答える
11130 参照

c++ - 関数ポインターへの C++ クラス メンバー関数ポインター

lua to C++ ラッパーとして luabind を使用しています。Luabind は、独自のコールバック関数を使用して lua によってスローされた例外を処理する方法、set_pcall_callback() を提供します。そこで、ドキュメントの例を言い換えました。変更は logger->log() 関数であり、関数を「Engine」というクラスに配置したため、通常のグローバル関数ではなく、メンバー関数になりました。私の問題があるようです。

関連するコードスニップは次のとおりです。

コンパイル中にコンパイラが言うことは次のとおりです。

したがって、エラーは、関数がクラスメンバー関数ポインターではなく、通常の関数ポインターを期待していることです。中間関数ポインタをキャストまたは使用して set_pcall_callback() 関数に渡す方法はありますか?

ありがとうございました!

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

c++ - C++がlua例外をキャッチしない

luabindを使用してLuaにバインドしたC++プログラムがあります。私は現在、luaスクリプトのデバッグを支援するためにluaとluabindが提供しなければならないエラー処理方法をテストしています。目的は、構文エラーやプログラミングミスが発生したときにluabindまたはluaに例外をスローさせて、それらをデバッグおよび修正できるようにすることです。

現在のところ、問題は、エラーメッセージや例外がスローされることなく、以下のスクリプトの実行が停止することです。したがって、より大きなプログラムでは、問題がどこにあるのか、そもそも問題があったとしてもわかりません。

関連するスニペットは次のとおりです。

Lua:(start.lua)

C ++:

実行時の出力は次のとおりです。

予想どおりに例外をスローする代わりに、スクリプトの実行が停止します。luaがいつ例外をスローするかを制御する方法や、エラーを処理する別の方法はありますか?デバッグ情報を生成するようにロギング関数を設定していますが、ブレークポイントにより、上記のcatchステートメントが実行されていないことがわかります。

ありがとうございました!

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

luabind - エクスポートされた関数のパラメーターとしての lua-function

このように lua 関数をメインの C++ プログラムに送信することは可能ですか?

それとも、このように?

そして、メインプログラムからどのように呼び出すのですか? 可能であれば、同じ方法で lua テーブルを使用してください。つまりexported_function(table);

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

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のようなものしか取得していません-所有権と破壊/

それは私が知りたいことではありません。割り当て、インスタンス化、ライフタイムなど、舞台裏で物事がどのように処理されるかを具体的に理解したいと思います。

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

windows - Windowsでのluabindインストールの問題

カントビルドluabind。Boostとbjam.exeをダウンロードしました。Windowsでの経験はありますか?このライブラリをどのように使用できますか?ありがとう。

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

lua - luabind::object の奇妙な問題

公式リリースは古く、boost の最新バージョンではコンパイルされないため、現在 luabind、具体的にはhttps://github.com/rpavlik/luabindを使用しています。

ネット上のどこにも見つからない、非常に奇妙な問題が発生しています。ケースを非常に単純なシナリオに減らすことができました。

1 つのモジュールには、次のものがあります。

別のモジュールでは、次のようになります。

lua から functionA と functionB を使用できるようにして、それらを連続して呼び出すと、出力は次のようになります。

ご覧のとおり、オブジェクトはまだ luabind が出力できるものを参照しています。しかし、それをスタックにプッシュして、スタック オブジェクトから新しいオブジェクトを作成しようとすると、値が nil になります。

これは、この特定のケースでのみ発生します。すべてを 1 つの関数に入れると、問題なく動作します。コードを同じモジュールの関数に入れると、正常に動作します。私はまだスタンドアロンのテスト プロジェクトを作成していませんが、コード内で干渉するものは何も考えられません。関数は lua から直接連続して呼び出されます。

私は何か間違ったことをしていますか?それともこれはバグですか?もしそれがバグなら、なぜ私はこのようなことを聞​​いたことがないのでしょうか?

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

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 のすべての要素を表示したいのですが、最初の要素しか表示されずにクラッシュします。

どうもありがとうございます!:)

ジェイソン