получить функцию, вызванную из кода C ++ - PullRequest
0 голосов
/ 12 ноября 2010

например, у меня есть это:

static int callFunction(lua_State* L)
{
 int p = lua_gettop(L);
 if (p == 1 && lua_isfunction(L, -1)) {
  /*
   * now i need something like "get the function thats in the first parametre
   */
 }
 return 0;
}

теперь мне нужно получить функцию, которая является первым параметром функции в этом коде C ++, извините за неясность, я не могу объяснить.1004 *

Ответы [ 3 ]

1 голос
/ 12 ноября 2010

Если вам нужно вызвать функцию, вы можете использовать lua_call.Однако Lua не позволит вам использовать какой-либо полезный указатель на функции Lua.Если вы хотите сохранить функцию в Lua, вам придется использовать реестр Lua для ее хранения.

0 голосов
/ 28 ноября 2010

Если вы хотите сохранить «указатель» на функцию Lua в C ++, вы можете просто сохранить / name / функции Lua, а затем сделать, как говорит DeadMG, и вызвать ее с помощью lua_call, как здесь: http://pgl.yoyo.org/luai/i/lua_call.

Если вы застряли с кодом, который у вас уже есть, это своего рода неприятная проблема;Я не уверен, что вы можете получить имя функции Lua из имеющегося у вас стека.Другими словами, вам может потребоваться изменить код на один уровень выше того, что вы опубликовали.

0 голосов
/ 12 ноября 2010

Я предполагаю, что вы, возможно, захотите взглянуть на функцию lua_tocfunction () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...