lua_open使用luaJIT返回null

时间:2013-12-31 14:42:47

标签: c++ lua embedding luajit lua-api

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

其他信息:使用makemake 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正常工作,测试脚本执行时没有错误。)

1 个答案:

答案 0 :(得分:12)

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

  

如果您在OSX上构建一个直接或间接链接的64位应用程序   针对LuaJIT,您需要将主要可执行文件与这些标志链接:

-pagezero_size 10000 -image_base 100000000