C에서 사용자 정의 루아 함수를 호출하려고합니다. 이것에 대한 논의를 보았는데 그 해결책은 분명해 보입니다. luaL_ref() 함수의 인덱스를 잡고 나중에 사용하기 위해 반환 된 인덱스를 저장해야합니다.C에서 루아 호출하기
제 경우에는 luaL_ref를 사용하여 값을 저장했으며, C 코드가 luaL_ref로 저장된 Lua 함수를 호출해야하는 시점에 있습니다. 이를 위해 다음과 같이 lua_rawgeti를 사용하고 있습니다.
lua_rawgeti(l, LUA_REGISTRYINDEX, fIndex);
이로 인해 lua_rawgeti에서 충돌이 발생합니다.
내가 사용하는 fIndex는 luaL_ref에서받은 값이므로 여기에서 무슨 일이 일어나고 있는지 잘 모르겠습니다.
편집 :
다음과 같이 내가 루아 스크립트를 실행 해요 :
static int save(lua_State *L)
{
int cIdx = myCIndex = luaL_ref(L, LUA_REGISTRYINDEX);
int eIdx = luaL_ref(L, LUA_REGISTRYINDEX);
: 나는 내 자신의 루아 라이브러리 'MYLIB'을 정의한
function errorFunc()
print("Error")
end
function savedFunc()
print("Saved")
end
mylib.save(savedFunc, errorFunc)
C 함수로,
필자는 Lua 스크립트에서 매개 변수로 설정된 함수 중 하나를 호출하고자하는 외부 이벤트를 수신 할 때까지 cIdx 및 eIdx를 저장합니다. 여기서, (같은 lua_State의 *를 사용하여, 동일한 스레드에서) 내가 전화 : 충돌을 일으키는
lua_rawgeti(L, LUA_REGISTRYINDEX, myCIndex);
합니다.
이 질문에 답하기 위해 우리는 호출하려고하는 "사용자 정의 루아 함수"를 어디에서 구해야하는지, 그리고 이것을 레지스트리에 저장하는 방법을 알아야합니다. –
[ac 함수에서 루아 함수를 콜백하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/2688040/how-to-callback-a-lua-function-from-ac-function) – finnw
문제는 내가 lua_close (L)를 호출 한 후 lua_rawgeti를 호출하고 있던 지점이 실행되고 있다는 것이 었습니다. – jimt