Вызов строки в Lua с C
Я пытаюсь научиться использовать Lua с C, поэтому сейчас я хочу попробовать запустить скрипт, не загружая его из файла, так как я не хочу возиться с файлами. Может ли кто-нибудь сказать мне, какие функции мне нужно вызвать для выполнения простой строки или что вообще?
2 ответа:
Можно использовать luaL_dostring для выполнения скрипта из строки.
Если вам нужна помощь с основами (создание состояния Lua и т. д.), прочитайте Часть IVпрограммирования в Lua .
Я создал функцию в своем проекте для загрузки буфера Lua, следующий код:
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; }
Этот код принимает buff и возвращает ret_string. Как сказал @interjay
luaL_dostring
- это выбор.