微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LuaJIT 未定义引用

如何解决LuaJIT 未定义引用

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

#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);

  // ...

  return 0;
}

由于对 lua_getgloballua_pcallk 的未定义引用而失败。为什么? LuaJIT 是否仅实现了 C API 的一个子集,而我必须另外链接 liblua

我正在编译和链接

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

解决方法

问题很简单:我必须包含

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

而不是标准的 Lua 标头。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。