首页 > 解决方案 > LuaJIT 未定义的引用

问题描述

我正在尝试编译并链接以下 C 程序liblluajit-5.1(我2.0.5在 Linux 上安装了 LuaJIT 版本):

#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

int main(int argc, char **argv)
{
  int status;

  lua_State *L = luaL_newstate();
  luaL_openlibs(L);

  lua_getglobal(L, "require");
  lua_pushliteral(L, "mod");

  lua_pcall(L, 1, 0, 0);

  // ...

  return 0;
}

由于未定义对lua_getglobaland的引用,此操作失败lua_pcallk。为什么?LuaJIT 是否只实现了 C API 的一个子集并且我必须另外链接到liblua

我正在编译和链接:

gcc -Wl,-E -o prog prog.c -lluajit-5.1 -lm -ldl

标签: clualinkerluajit

解决方案


问题很简单:我必须包括

#include "luajit-2.0/lua.h"
#include "luajit-2.0/lauxlib.h"
#include "luajit-2.0/lualib.h"

而不是标准的 Lua 头文件。


推荐阅读