在 C++ 中嵌入 Lua

Posted

技术标签:

【中文标题】在 C++ 中嵌入 Lua【英文标题】:Embedding Lua in C++ 【发布时间】:2012-01-23 01:34:24 【问题描述】:

我一直在尝试将 lua 嵌入 c++ 应用程序,但无济于事,因为编译器抱怨“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;

【问题讨论】:

lua_open 已不在 5.1 手册中。它仅用于兼容性,现已在 5.2 中删除。 另请参阅这个非常有用的堆栈溢出答案,其中包含 lua_Alloc() 函数的示例以及指向 lua 文档的链接。 ***.com/questions/3880798/lua-runs-out-of-memory 这是第二个堆栈溢出答案,提供了有关 lua 内存分配的更多细节***.com/questions/11324117/… 【参考方案1】:

确实,lua 5.2 reference manual中没有提到lua_open函数

lua_State 是用lua_newstate 构造的,你可以从lauxlib.h 使用luaL_newstate

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

【讨论】:

以上是关于在 C++ 中嵌入 Lua的主要内容,如果未能解决你的问题,请参考以下文章

嵌入在 C++ socket.http 中的 LUA [错误:尝试调用 nil 值]

如何在lua中嵌入java代码

语言是Lua,单词是“嵌入式”

使用C ++代码获取Lua package.cpath和path

PHP 中Lua嵌入redis

在 Unity3D 的 Mono 虚拟机中嵌入 Lua 的一个方案(转载)