4

我有一个调用 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.
4

1 回答 1

5

在C中你有类似的东西

 static int foo (lua_State *L) {
   int n = lua_gettop(L);
   //n is the number of arguments, use if needed

  lua_pushstring(L, str); //str is the const char* that points to your string
  return 1; //we are returning one value, the string
}

在 Lua 中

lua_string = foo()

这假设您已经使用 lua_register 注册了您的函数

请参阅出色的文档以获取有关此类任务的更多示例。

于 2013-11-05T18:01:48.920 回答