使用C调用Lua字符串

我正在学习如何在C中使用Lua,因此现在我想尝试在不从文件中加载脚本的情况下运行脚本,因为我不想被文件搞砸。有人可以告诉我需要调用哪些函数来执行简单的字符串或其他吗?

原文链接 https://stackoverflow.com/questions/2169356

点赞
stackoverflow用户189205
stackoverflow用户189205

你可以使用luaL_dostring函数,从一个字符串中执行脚本。

如果你需要基础帮助(创建Lua状态等),请阅读编写Lua程序的第四部分。

2010-01-30 21:07:12
stackoverflow用户1820217
stackoverflow用户1820217

我在项目中创建了一个函数以加载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是一种选择。

2015-12-03 06:19:05