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

visual-studio - Visual Studioのソリューションに含めずに.cppファイルを参照するにはどうすればよいですか?

私はこのコードをコンパイルしようとしています:

しかし、私は.libの.libを持っていないluabindので、.h/.cppファイルでソースを使用します。含めるディレクトリを追加する方法ですが、リンクエラーが発生します。コンパイルできる唯一の方法は、既存の要素として.cppファイルを追加することですが、ソリューションツリーは追加のファイルで乱雑になります。ソリューションのプロパティに追加の.cppファイルのディレクトリを追加する方法があるかどうか誰かに教えてもらえますか?

ありがとう

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

lua - C++ からオブジェクトのテーブルを返す、ポリシーを採用する

luabind を使用して、C++ からオブジェクトのテーブルを作成します

関数を次のように登録します

および lua_Object として

テーブルに格納されているオブジェクト ( new lua_Object( ... ) ) の所有権を取得するように luabind に指示するにはどうすればよいですか? 回避策は何ですか?

ありがとう -

0 投票する
0 に答える
310 参照

lua - Lua スクリプトを介して Android コンテンツ プロバイダ データにアクセスする

Android ベースの API を使用して、コンテンツ プロバイダー クラスを使用してコンテンツ プロバイダーにデータを照会できることを認識しています。

http://developer.android.com/guide/topics/providers/content-providers.html

ただし、ネイティブ コール (Lua スクリプト) を作成してこのデータにアクセスできるライブラリはありますか? たとえば、Lua スクリプトで電話をかけて、モバイル デバイスの連絡先リストにある人物の連絡先情報を読み取る必要がある場合、それは可能ですか? ? データをネイティブに読み取ることができる Lua のような構文を持つライブラリはありますか?

そうでない場合、上記のタスクを達成するための最良の方法は何ですか? これまでのところ、LuaSQL ライブラリを使用してアプリケーションにローカルな SQLite3 データベースを読み取ることができました。ここで、Lua を使用して何らかの方法でコンテンツ プロバイダーからデータを読み取りたいと考えています。

あなたのすべての助けに感謝します。ありがとう。

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

c++ - Luabindでイベントコールバックを処理する

Luaを使用したスクリプトをアプリケーションに追加しているので、GUIツールキットのバインディングを実装する必要があります。私たちが使用するツールキットはwxWidgetsです。

私はLua5.1とluabind0.9.1を使用していますが、これまでのところ非常にうまく機能しています。ただし、イベントを最適に処理する方法がわかりません。たとえば、ボタンを作成し、クリックされたときに文字列を出力する場合は、C++で次のように記述します。

私の夢-Luaで同じことをするためのAPIは次のようになります:

または、複数のイベントハンドラーを許可します。

不可能な場合は、C++APIに似た次のようなものを使用します。

ただし、使用したいwxWidgets-libraryのすべてのクラスにラッパークラスを記述せずに、Luabindを使用してこれを実装する方法がわかりません。

助言がありますか?

おそらく、Luabindは何らかの方法でヘルパークラス(「wxLuaEventPropagator」など)を自動的に作成できますか?そのため、wxButtonクラスには、イベントごとにネストされたwxLuaEventPropagatorクラスがあります(「on_click」など)。繰り返しになりますが、使用するwxWidgetsのすべてのクラスにラッパークラスを作成する必要はありません。これは、大量のクラスがあるためです。

(はい、私はwxLuaを知っています)

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

c++ - オーバーロードされた関数をLuabindにバインドする方法は?

私はc++でゲームエンジンを書いています。これはLuaスクリプト(Luabindを使用しているラッピング)を提供しますが、オーバーロードされた関数をバインドするのに問題があります。すなわち:私はオーバーロードされた関数を持っています:

void setGlobalPosition(const Vec3& position);

void setGlobalPosition(Real x, Real y, Real z);

そして、これらの両方をluaに公開したいと思います。明らかにこれは間違っています:

luabind::module(L)[ luabind::class_<Critter::Body>("Body") .def("setGlobalPosition", &Critter::Body::setGlobalPosition ) ];

私はこのサイトhttp://www.codeproject.com/KB/graphics/luabindLuaAndOgre3d.aspx?msg=3376320(Luabindの非常に良いチュートリアル-私はそれを強くお勧めします)でそれを行う方法を次のように見つけました:

luabind::module(L)[ luabind::class_<Critter::Body>("Body") .def("setGlobalPosition", (void( Critter::Body::*)(const Vector3&))Critter::Body::setGlobalPosition ) ];

しかし、それは私にもエラーを与えます(誰かが興味を持っているなら私はそれらを添付することができます)。

私も試し .def("setGlobalPosition", Critter::Body::setGlobalPosition<Vector3> ) ましたが、それでもエラーが発生します。

どのように私はそれを行うことができますか?


編集:わかりました、私はそれをそのようにする方法を見つけました:

luabindのドキュメントからですが、エラーが発生します(最初のもの):

エラーC2440:'型キャスト':'オーバーロードされた関数'から'void(__thiscall Critter :: Body :: *)(Ogre :: Vector3)'に変換できません

しかし、とにかく問題が発生するのは、この関数が継承されているためです(それはから来てNxOgre::Actor::いるので、とにかく正しいアプローチではありません


編集2:

3つのfloatをパラメーターとして使用して関数のバージョンをバインドしようとしましたが、驚くべきことに、すべてが正常にコンパイルされますが、vector3を使用したバージョンはコンパイルされません。

これは私が3つのfloat関数を実装するために使用したものです:

私はこれについて困惑しています;(

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

c++ - Luabind から C++ メンバー関数を呼び出すと、「一致するオーバーロードが見つかりません」というメッセージが表示される

いくつかのクラスを DLL で Luabind にエクスポートしましたが、これら 2 つのクラス (LuaScriptManager、EventManager) はすべて正常に動作しています。Lua から関数を呼び出すことができ、すべて問題ありませんが、DLL とリンクするクライアント実行可能ファイルに新しいクラスをセットアップしようとしていますが、これまでのところまったくうまくいきません。

呼び出す関数ごとに表示されるエラー メッセージは次のとおりです。「一致するオーバーロードが見つかりません。候補: void loadResource(ResourceManager&, std::string const&)」

クラス バインディングはhttp://www.nuclex.org/articles/5-cxx/1-quick-introduction-to-luabindからのものです。

対応する lua テスト コードは次のとおりです。

この奇妙な動作の原因は何ですか?

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

c++ - lua 関数を C++ 関数にバインドするにはどうすればよいですか?

onPickup、onDrop、onUse などの多くの関数を持つ Entity というクラスがあります。これらの関数をすべて定義するスクリプトを作成し、C++ 関数から呼び出せるようにする必要があります。したがって、C++ で定義された関数は、何らかの機能を持つ対応する Lua 関数を呼び出すだけです。

しかし、ここに問題があります。プログラム内のすべてのエンティティが独自のスコープで動作するように、私が作成するすべてのスクリプトが必要です。

私は LuaBind を使用していますが、Lua の使用経験がないため、ここで少し迷っています。

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

eclipse-plugin - 既製の Lua ファイルを開く

Lua 言語は初めてです。. . 既製の .lua ソース ファイルがいくつかあります。今、私はそれを編集したいし、それを変更したい. まず、開いて見たいです。

ネットで検索したところ、メモ帳で開いている可能性があることがわかりましたが、メモ帳で開くと、ゴミの値が表示されます。. . .

開いて読むのを手伝ってくれる人はいますか?

前もって感謝します。. .

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

c++ - lua のテーブル シミュレーション

良い一日

c++ std::map から lua スクリプトへのアクセスを許可する特定のタスクがあります。望ましいスクリプト構文は glob["tag"] = "value" または glob("tag") = "value" です

研究では、ルバインドバインディングを試しました

ただし、以下にリストされているスクリプトの実行後

エラーが発生しました [string "glob("tag") = "asdasd"..."]:1: '=' の近くに予期しない記号があります

それでは、ご意見ご感想お待ちしております。

ありがとう

更新 2lhf: グローバル変数データは c++ 部分を介して保存およびシリアル化され、lua からアクセスする必要があります。luaState はスクリプトの実行ごとに作成され、実行間では存在しません。解決策の 1 つは、スクリプトの実行前にグローバル変数テーブルを作成して入力し、実行後にマップと同期することですが、十分に遅いと思います。そのため、前述の構文を使用した c 関数を介したアクセスを歓迎します。

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

c++ - エラーが発生した後、(luabind) lua の状態が良好であることを確認するにはどうすればよいですか?

lua コードで例外が発生すると、luabind はスタックにエラー メッセージを残して、私が収集できるようにします。例外を処理した後、lua スタックが適切な状態になることを保証する方法を考えています。

  1. 私が見つけた例では、 を使用するように指示されていますluabind::from_stack(e.state(), -1)。これにより、エラー メッセージがスタックに残りませんか? 私はそれをポップすべきではありませんか?

  2. スタックからエラー メッセージをポップするだけで十分ですか? エラーにより、他のガベージがスタックに残されますか?

エラーが発生した後、lua の状態が良好であることを確認するにはどうすればよいですか?

これは私が持っているものです: