在C++中嵌入Lua

27

我一直尝试在C++应用程序中嵌入Lua,但编译器报错说“lua_open”不存在。我正在使用Lua 5.2。

我发现很多文章都声称在第五个版本中lua_open()被替换了,但没有一个提到用什么替换。

以下是我正在尝试编译的代码:

extern "C" {
#include "../lua/lua.h"
#include "../lua/lualib.h"
#include "../lua/lauxlib.h"
}

int main()
{
    int s=0;

    lua_State *L = lua_open();
    // load the libs
    luaL_openlibs(L);
    luaL_dofile(L,"example.lua");
    printf("\nDone!\n");
    lua_close(L);

    return 0;
}

4
lua_open在5.1的手册中已经不存在了。它只是为了兼容而存在,但在5.2中已经被移除了。 - lhf
还可以参考这个非常有用的堆栈溢出答案,其中包含lua_Alloc()函数的示例以及指向lua文档的链接。http://stackoverflow.com/questions/3880798/lua-runs-out-of-memory - Richard Chambers
这里是第二个Stack Overflow答案,提供了有关Lua内存分配的更多细节:https://dev59.com/7Ggu5IYBdhLWcg3wbWk9 - Richard Chambers
1个回答

37

事实上,在lua 5.2参考手册中没有提到lua_open函数。

lua_State是通过lua_newstate构建的,您也可以使用来自lauxlib.hluaL_newstate函数。

更快获取这类问题的答案的方法是查看Lua 5.2源代码(我刚刚做了)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接