Вызов строки Lua с C - PullRequest
       34

Вызов строки Lua с C

3 голосов
/ 30 января 2010

Я пытаюсь научиться использовать Lua с C, поэтому сейчас я хочу попробовать запустить скрипт, не загружая его из файла, так как я не хочу возиться с испорченными файлами. Кто-нибудь может сказать мне, какие функции мне нужно вызывать для выполнения простой строки или что когда-либо?

Ответы [ 2 ]

6 голосов
/ 31 января 2010

Вы можете использовать luaL_dostring , чтобы выполнить скрипт из строки.

Если вам нужна помощь с основами (создание состояния Lua и т. Д.), Прочтите часть IV Программирование на Lua .

0 голосов
/ 03 декабря 2015

Я создал функцию в своем проекте для загрузки буфера 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;
}

Этот код принимает бафф и возвращает ret_string. Как сказал @interjay, luaL_dostring - это выбор.

...