package.loadlib
関数を使用して Lua にロードする dll として、lua 用の C モジュールを作成しました。このモジュールはluaL_loadstring
、文字列からいくつかの lua コードを実行するために使用することになっています。私の lua スクリプトは、自分でコーディングしたのではないアプリケーションによって実行され、私のモジュールはアプリケーションの機能を拡張することになっています。luaL_loadstring
および結果を使用するとlua_pcall
、アプリケーションはいくつかの文字列、特にアプリケーションによって定義されたいくつかの C 関数を呼び出す関数を使用する文字列でクラッシュします (C で定義されたすべての関数でクラッシュするわけではなく、一部の関数でのみクラッシュすることに注意してください)。クラッシュしない文字列では問題なく動作し、クラッシュする文字列では loadstring からの結果を lua にプッシュして実行し、コード自体が有効であることを示します。
これは私がそれを呼び出す方法です:
lua_getglobal(L, "loadstring");
lua_pushstring(L, msg);
lua_call(L, 1, 1);
lua_call(L, 0, 0);
これらのクラッシュの原因について何か提案はありますか?