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

c - Lua C API - プロパティを関数にマッピングする

関数をLuaのプロパティとしてプッシュすることは可能ですか?

現在、次のようにフィールドとしてプッシュすることで、Get/Set 関数を使用できます。

そして、Lua で次のように呼び出します。

メタテーブルなしで C 関数にマップされたプロパティをプッシュすることは可能ですか? カスタム関数にメタテーブルでマッピングできましたが、もっと簡単な方法があるかどうか疑問に思っていまし__indexた。__newindex最終的に、メタテーブルのない次の構文が必要です。

これは と なし__indexで可能__newindexですか?

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

c++ - lua_open は luaJIT を使用して null を返します

最近の luaJIT を使用するとlua_opennull. これは、通常の lua ライブラリでは発生しません。

出力:0x0

luaJIT を機能させるにはどうすればよいですか?

SSCCE:

追加情報: ソースから OSX 10.9 にビルド (2.0.2 と git の両方を試した)makemake install. コンパイラの使用:

(luajit コマンド ライン アプリケーションの使用は問題luajitなく動作し、テスト スクリプトはエラーなしで実行されます。)

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

c - モジュールの未定義シンボルのロード中にエラーが発生しました: luaL_setfuncs

lua スクリプトから呼び出される C モジュールを作成しようとしています。私はdebian Linuxに取り組んでいます。私は mysql-proxy と lua 5.2 を使用しています。呼び出される関数の例をいくつか作成しました (チュートリアルからコピー)。

ローダーは次のように定義されます。

これを lua から呼び出すには、次のコードを使用します。

このコマンドでコンパイルしました:

スクリプトを実行しようとすると、requireコマンドで次のエラーが発生します。

私は自分が間違っていることに本当に迷っています。

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

c++11 - 任意の文字列を実行するときに Lua でエラーを処理するにはどうすればよいですか?

ここでは絶対的なミニマリズムを目指します。(Lua C API を使用するのは久しぶりです。)

このプログラムは、完璧な Lua を供給している限り問題なく動作します。ただし、何か悪いこと ( などasdf()) を入力すると、プログラムがクラッシュします。エラーを適切に処理しないのはなぜですか?

私は以前に通話を中断しようとしました。それ自体への呼び出しでクラッシュしlua_pcallます。私はその線を超えることはありません。

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

c++ - luaL_error が呼び出されたときに c++ オブジェクトのデストラクタが呼び出されないのはなぜですか?

私はこのようなコードを持っています

lua が c コンパイラーによってコンパイルされたとき、longjmp を使用してエラーが発生することを私は知っています。そのため、C++ コンパイラを使用してコンパイルし、C++ 例外を使用してエラーを処理し、エラーがスローされた場合でもデストラクタを呼び出すようにしました。しかし、私の問題は、オブジェクトのデストラクタが呼び出されないことです。

ただし、次のコードは機能しています (デストラクタが呼び出されます)。

なぜこれが起こったのですか?LUAI_THROW マクロはスロー キーワードとして解釈されるはずです。

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

c - dlsym で lua ライブラリの関数を呼び出す方法

lua ライブラリ ランタイムを呼び出そうとしているので、C で lua lib を作成しました。

だから私はそれを動的ライブラリとして構築し、呼び出しを試みました:

しかし、それを使用する Lua コードを呼び出すと、セグメンテーション違反が発生します。

プログラムで lib lua を呼び出すにはどうすればよいですか。lib をいくつかの lua パスに配置し、lua api で libs を呼び出すことができることはわかっていますが、dlopen を使用して呼び出す必要があります。

ありがとう、

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

lua - Cに格納されたLua関数への「ポインタ」を取得する

Lua C API では、スタックから数値または文字列を .xml に格納できますlua_tostring()

Lua 関数への「参照」(それが正しい用語である場合) は、Lua API を介して C にどのように渡すことができますか? lua_call()そのため、名前で参照する必要なく、後で C から呼び出すことができます。

(実際にはそのようにする必要があります.Cプログラムは将来どこかで関数を呼び出しますが、渡される関数はLuaプログラムで定義されているため、プログラムは関数について何も知りません)

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

c - Lua C API でセレクター文字列を使用してネストされた値を選択する

ネストされたテーブルで定義された値があると仮定します: tab["m"]["b"] = {}. Lua では、前のステートメントで定義できます。

C APIでも可能ですか?tab具体的には、、などを個別に押す代わりにm、単一の文字列で値を選択しますtab["m"]["b"]

(以下のコードのように) 単一の値で行われるように、それを押して選択することはできません。

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

c - C API を使用した弱いテーブルと GC ファイナライザー

C API を使用して弱いテーブルに格納することにより、関数値の GC ファイナライザーを作成しようとしています。

純粋な Lua 5.2 でプロトタイプを作成することから始めました。

結果の出力:


プロトタイプは意図したとおりに機能しているようです。以下はCバージョンです:

以下を使用してコンパイル:

結果の出力:

C バージョンにはいくつかの小さな違いがあります。

  1. ローカルsentinelsテーブルの代わりに、レジストリに保存しています。
  2. メタメソッドを使用してセンチネル値のテーブルの代わりに、サイズがゼロのユーザーデータを使用します__gc

myfuncC バージョンで完全なコレクション サイクルを実行した後にファイナライザが実行されない理由について、私は混乱しています。私は何を間違っていますか?