함수를 호출하는 가장 기본적인 방법은
lua_getglobal(lua_state, "함수명");
lua_pcall(lua_state, 0, -1, 0);[
이걸 들 수 있겠는데요, 의도한 대로 잘 동작합니다.
문제는 luaL_dostring을 사용할 때 입니다.
동작은 하는데 리턴값은 받아올 수 없더라구요.
어떻게 하면 리턴값을 받아올 수 있을까요?
그리고 추가 질문으로 처음 방법으로 루아 함수를 호출 할 때,
테이블에 저장된 함수(특히 클래스의 메쏘드)는 어떻게 호출 할 수 있을까요?
lua_getglobal(lua_state, "클래스명:함수명");
위 방식으로는 되지 않더라구요. 그래서 luaL_dostring을 쓰려고 하는 것이기도 하구요.
클래스의 메쏘드를 실행하는 것은 첫 인자로 클래스 자신을 넘겨주는 것과 같으므로 호출 전에 인자로 자기 자신을 푸쉬해주면 되네
요.
코드:
lua_getglobal(m_luaState, "클래스");
lua_getfield(m_luaState, -1, "메소드");
lua_pushvalue(m_luaState, -2);
lua_pcall(m_luaState, 1, -1, 0);
#define luaL_dostring(L, s) \
(luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
--
Kwon Tai-in
Senior Engineer
GES Co.ltd. (http://www.iges.co.kr)
home: http://www.redwiki.net
PGPkey: http://keyserver.veridis.com:11371/export?id=-5789970709130555655&created=1143603649000
PGPKeyID: 0x0E5B4EF9
MSN,GTalk ID : redwi...@gmail.com
답변 정말 감사드립니다. ㅜㅇㅜ
오늘 퇴근 못 할뻔 했는데 이제 가뿐한 마음으로 퇴근할 수 있겠네요. ^^;;;
우오오오오~~ 그런 문제가 있었군요!
답변 정말 감사드립니다. ㅜㅇㅜ
오늘 퇴근 못 할뻔 했는데 이제 가뿐한 마음으로 퇴근할 수 있겠네요. ^^;;;