함수 멤버로 C 함수를 푸시하거나 루아 함수로 C 함수를 등록하는 데 아무런 문제가 없습니다 lua_register (L, lua_func_name, c_func); 루아 함수를 C API에서 테이블 멤버로 푸시
하지만 내가 어떻게 C에서 "foober"에 대한 기능 콜백 PARAM로 luaFoo()를 전달하려는 것을 루아에게? lua_pushcfunction - C 함수를 푸시합니다. lua_pushstring은 일반 문자열을 푸시하므로 콜백 필드는 함수가 아닌 문자열이됩니다.루아 코드 :
CALLBACKS = {};
FOO = 0;
function luaFoo()
FOO = FOO + 1;
end;
function addCallback(_name, _callback)
CALLBACKS[_name] = _callback;
end;
function doCallback(_name)
CALLBACKS[_name]();
end;
C 코드 :
static int c_foo(lua_State* l)
{
printf("FOO\n");
return 0;
}
/*load lua script*/;
lua_State* l = /*get lua state*/;
lua_getglobal(l, "addCallback");
lua_pushstring(l, "foober");
//What push for luaFoo()
lua_pushcfunction(l, c_foo);
lua_call(l, 2, 0);
lua_getglobal(l, "doCallback");
lua_pushstring(l, "foober");
lua_call(l, 1, 0);
비슷한 - 난 이미 C. 우리의 콜백 PARAM로 전달하는 방법 lua_register에 등록 C 함수를 얻는 경우 register c_foo => c_foo가 루아 함수로 존재하며, "c_foo"을 콜백 함수 param으로 전달할 방법을 알려주는 방법.