2010-01-30 5 views
3

루아를 C와 함께 사용하는 방법을 배우려고합니다. 이제는 파일에서 로딩하지 않고 스크립트를 실행하고 싶습니다. 나는 엉망이되고 싶지 않기 때문에 파일과 함께. 누구나 간단한 문자열을 실행하기 위해 어떤 함수를 호출해야합니까?C로 루아 문자열 호출하기

+2

"LUA"가 아니라 "루아"입니다. http://www.lua.org/about.html#name을 참조하십시오. – lhf

답변

6

luaL_dostring을 사용하면 문자열에서 스크립트를 실행할 수 있습니다.

기본 사항 (루아 주 만들기 등)에 대한 도움이 필요하면 Programming in Lua 파트 IV를 읽으십시오.

+0

그런데 오류를 표시하는 것에 대해 알고 계신다면 고맙겠습니다. –

+0

이 예제에서 오류 처리 방법을 확인하십시오 : http://www.lua.org/pil/24.1.html 그 코드는'luaL_dostring' 대신'luaL_loadbuffer'와'lua_pcall'을 사용하지만, 같은 방식으로 작동해야합니다. – interjay

+0

고마워요. 잘 작동합니다. –

0

나는 코드입니다 다음, 루아 버퍼를로드 할 수 내 프로젝트에서 함수를 만들었습니다

bool Reader::RunBuffer(const char *buff,char* ret_string,const char *name){ 
    int error = 0; 
    char callname[256] = ""; 
    if(m_plua == NULL || buff == NULL || ret_string == NULL) return false; 
    if(name == NULL){ 
     strcpy(callname,"noname"); 
    }else{ 
     strcpy(callname,name); 
    } 
    error = luaL_loadbuffer(m_plua, buff, strlen(buff),callname) || lua_pcall(m_plua, 0, 1, 0); 
    if (error){ 
     fprintf(stderr, "%s\n", lua_tostring(m_plua, -1)); 
     lua_pop(m_plua, 1); 
    }else{ 
     sprintf(ret_string, "%s", lua_tostring(m_plua, -1)); 
    } 
    return true; 
} 

이 코드는 버프를 받아, ret_string을 반환합니다. @interjay가 말한 것처럼 luaL_dostring이 선택되었습니다.