使用luaJIT时,lua_open返回null。

最近使用 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
}

其他信息:在 OSX 10.9 上通过源代码构建(尝试过 2.0.2 和 git 版本),使用 makemake install 命令。使用编译器:

$ 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 可以正常工作,执行测试脚本时没有出现错误。)

点赞
用户646619
用户646619

显然,x64 Mac 应用程序需要特殊处理;查看http://luajit.org/install.html

如果在OSX上构建直接或间接链接到LuaJIT的64位应用程序,则需要使用以下标志链接主要可执行文件:

-pagezero_size 10000 -image_base 100000000
2014-01-02 02:08:44