おはよう、 私はLUA/C++アプリケーションに取り組んでいます。他のluaコードを再帰的に呼び出すにはluaが必要です。たとえば、C++はlua関数を呼び出し、lua関数は読み込まれた別の文字列から別のlua関数を呼び出します最初のlua関数の開始時に実行される登録済みのC関数を使用します。ここ Lua:2番目の文字列をロードした後にフィールドを取得できません。
は、私は、次の午前手順は次のとおりです。lua_State* state = luaL_newstate();
luaL_openlibs(state);
lua_register(state, "secondLua", secondLua);
lua_getfield(_luaState, LUA_GLOBALSINDEX, "init");
lua_pcall(_luaState, 0, 0, 0);
int secondLua(lua_State* state){
char* myString[128] = "function init2()\n io.write(\"hello\")\n end";
luaL_loadstring(pLuaState, myString);
lua_getfield(pLuaState,LUA_GLOBALSINDEX, "init2"); // function init2 declared on myString
lua_pcall(pLuaState, 0, LUA_MULTRET, 0);
//getting "attempt to call a nil value" here
return 0;
}
すべてのヘルプは高く評価され、そして第二に、私は第二の機能に名前を付けることができる方法は、「初期化」などが存在するかどうかを知りたいです最初の1つ;
PS:私はC++ 14とlua 5.1をLUAJITで使用していますが、私はluaのdofileを使用できません。
実際の問題とは関係ありませんが、[sol](https://github.com/ThePhD/sol2)などのラッパーライブラリを使用することを検討しましたか? – Borgleader
なぜこのタグは '[c]'ですか? – 3442
@KemyLandこれはLuaのためのC APIだと思います。 – Jakuje