問題タブ [lua-api]

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

c++ - C API を使用してネストされた Lua テーブルを作成する方法

のようなテーブルを作成したい

C API を使用していますか?

私の現在のアプローチは

ループで内部テーブルを作成します。前に、このループを使用します

2 つの数値スロットの外部テーブルを作成します。

しかし、どうすれば内側のテーブルを外側のテーブルに保存できますか?

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

c++ - C API から呼び出される Lua スクリプトの実行時間制限

lua ファイルをロードして実行する 2 つの C++ ステートメントに実行時間制限 (10 ~ 20 秒など) を設定する方法はありますか?

Lua ファイルは信頼されていないため、悪意のあるユーザーが Lua コードの無限ループでプログラムを無期限にハングアップさせたくありません。

Lua API が C であるため C のタグを付け、C++ を使用しているため C++ のタグを付けます

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

c++ - ハンドルを使用して.luaからlua関数を呼び出しますか?

私はluaをc++と統合しようとしている小さなプロジェクトに取り組んでいます。しかし、私の問題は次のとおりです。

複数のluaスクリプトがあります。それらをs1.luas2.luaおよびs3.luaと呼びましょう。これらのそれぞれには、setVars()およびexecuteResults()という関数があります。

これで、LuaL_dofileを介して、setVars()やexecuteResults()を使用した直後にluaファイルを呼び出すことができます。ただし、ここでの問題は、s2.luaをロードした後、s1.luaの関数を呼び出すことができなくなることです。これは、関数へのアクセスを回復するためにs1.luaでLuaL_dofileをやり直す必要があることを意味します。そうすることで、s2.luaの関数にアクセスできなくなります。

すべてのluaファイルを連続してロードし、その後、それらの関数を自由に呼び出し始める方法はありますか?s1-> executeResults()s5-> executeResults()s3-> setVars()などのようなもの。

私は現在、boost :: filesystemを使用してフォルダー内のすべてのluaファイルを検出するシステムをすでに導入しています。次に、これらのファイル名をベクターに保存し、ベクターを繰り返し処理して、各luaファイルを連続してロードします。

ベクトルをluaファイル名で埋める前に、プラグインのロード関数は現時点では次のようになっています。

もう少し明確にするために、.luaにあるのは次のようなものだけです。

などですが、両方を続けてロードした後、s1.luaのsetVars()とs2.luaのsetVars()を呼び出せるようにしたいと思います。

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

c++ - CAPIから独自の環境で信頼できないLuaファイルを実行する方法

lua_setfenv()を呼び出して、信頼できない.luaファイルを独自の環境で実行し、コードに影響を与えないようにします。

ただし、その関数のドキュメントでは、ファイルの実行方法ではなく、関数の呼び出し方法についてのみ説明しています。

現在、私が使用しているファイルを実行するには、次のようにします。

を使用してCAPIから「dofile」lua関数を呼び出すlua_setfenv必要がありますか、それともより洗練された方法がありますか?

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

c - Lua C API での Lua テーブルの複製

Lua で Lua テーブルを複製する方法の例はたくさんありますが、ネイティブの Lua C API でそれを行う方法の例を見つけることができませんでした。私は2回手でそれをやろうとしましたが、本当の(動作しているものの)混乱に終わりました.

C API で Lua テーブルの浅いコピーをエレガントに行う方法に関するヒントやリンクはありますか?

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

lua - Lua C API: luaL_newmetatable で作成されたメタテーブルを削除しますか?

fooで作成されたメタテーブルを削除してluaL_newmetatable( L, "foo" );luaL_getmetatable( L, "foo" );NIL 値を再度プッシュするにはどうすればよいですか?

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

c++ - Lua C API: 追加の引数の処理と保存

CreateEntity は、私のプロジェクトで Lua にバインドした C 関数です。最初の引数としてエンティティ クラス名の文字列を取り、選択したエンティティのコンストラクタに渡す必要がある任意の数の追加の引数を取ります。

たとえば、CreateEntity が通常の Lua 関数である場合、次のようにすることができます。

しかし、C Lua 関数でこれを行うにはどうすればよいでしょうか?

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

lua - Luaは複数のクロージャーインスタンスを作成します

ファイルにいくつかの lua コードがあります。このコードの複数のクロージャ インスタンスを作成し、それぞれに異なる _ENV 上位値を設定したいと考えています。luaL_loadfileを使用してファイルをロードし、最初の上位値を異なるテーブルで N 回設定して、N 個のインスタンスを作成できます。しかし、これはファイルをN回ロードしてコンパイルしませんか?

ロードファイルがない場合を除いて、私がやりたいことと同等のluaは次のとおりです

これを行うより良い方法はありますか?

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

lua - スタンドアロン Lua を使用した Luad

編集: これは、共有ライブラリ、d ランタイム、および os x のより一般的な問題にまで追跡されています。こちらをご覧ください: OS X での D ランタイムの初期化

Lua スタンドアロン インタープリターからアクセスできる単純な d 関数を取得しようとしています。

Luaインスタンスに広告ライブラリを認識させるためのすぐに明白な方法が見つからなかったので、このハックを試しました

require("luad_test") を呼び出すと、 luaopen_luad_test(lua_State* L) が呼び出され、インタープリターの lua_State にアクセスできることがわかっています。ただし、require を呼び出すと、seg fault が発生します。

私はこれを完全に間違った方法で見ていますか?

編集:私は os x で lua 5.1.5 を使用しており、.so の代わりに .dylib をロードできるようにするために、package.cpath に「;?.dylib」を追加しました。

edit2: 少し絞り込みました。luaopen_luad_test で new を使用すると、segfault が発生します。

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

c++ - Love 2D Xcode のコンパイル : アーキテクチャの未定義シンボル

xcode で c++ をコンパイルするときに、これらの「シンボル」をコンパイラに認識させるにはどうすればよいですか。ここにエラーがあります(フレームワークを無視して、欠落しているフレームワークに対してエラーが発生していると感じています)

(そして、それは何度も続きます。エラーは似ているので、サンプリングしただけです)