【发布时间】:2014-01-18 11:34:14
【问题描述】:
使用最近的 luaJIT lua_open 返回 null。常规 lua 库不会发生这种情况。
lua_State *L = lua_open();
std::cout << L << std::endl;
输出:0x0
如何让 luaJIT 工作?
SSCCE:
#include <iostream>
#include <luajit-2.0/lua.hpp>
//linked library: libluajit-5.1.a
int main(int argc, const char * argv[])
{
lua_State *L = luaL_newstate(); // lua_open();
std::cout << L << std::endl; // 0x0
}
附加信息:使用make 和make install 从源代码(已尝试2.0.2 和git)基于OSX 10.9 构建。使用编译器:
$ cc --version
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix
(使用 luajit 命令行应用程序 luajit 工作正常,测试脚本执行时不会出错。)
【问题讨论】:
-
你使用的是哪个版本的 LuaJIT?
-
@RyanStein 当前稳定版本 2.0.2。
-
不是 lua_open 被 lua_newstate 取代了吗?除非您使用自己的内存管理器,否则您应该能够使用 luaL_newstate,它是带有默认内存管理器的 lua_newstate。
-
使用 luajit 你需要使用 luaL_newstate 而不是 lua_newstate 但正如 RyanStein 在他下面的评论中指出的那样 lua_open 是 luaL_newstate 的定义。
-
你为这个问题发布了你的整个测试用例吗?
标签: c++ lua embedding luajit lua-api