C 関数を呼び出す Lua スクリプトがあります。現在、この関数は何も返しません。この関数を変更して文字列を返すようにしたいので、CI のこの関数の最後で文字列をスタックにプッシュします。呼び出し元の Lua スクリプト内で、プッシュされた文字列値を取得する必要があります。
C の初期化と Lua への登録
void cliInitLua( void )
{
void* ud = NULL;
Task task;
// Create a new Lua state
L = lua_newstate(&luaAlloc, ud);
/* load various Lua libraries */
luaL_openlibs(L);
/*Register the function to be called from LUA script to execute commands*/
lua_register(L,"CliCmd",cli_handle_lua_commands);
//lua_close(L);
return;
}
これは、文字列を返すための私の c 関数です。
static int cli_handle_lua_commands(lua_State *L){
...
...
char* str = ....; /*Char pointer to some string*/
lua_pushstring(L, str);
retun 1;
}
これは私のLuaスクリプトです
cliCmd("Anything here doesn't matter");
# I want to retreive the string str pushed in the c function.