链接器找不到Lua库定义

时间:2019-09-17 04:44:15

标签: c++ linux lua g++ linker-errors

因此,我是C ++的新手,我一直试图在我的C ++项目中运行Lua文件。首先,我运行了以下简单代码:

#include <iostream>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <stdlib.h>
#include <stdio.h>

int main() {
    std::cout << "Lua Console";

    lua_State *L;
    L = luaL_newstate();

    char ch;
    std::cin >> ch;
    return 0;
}

终端命令如下:

g++ main.cpp -L lib/liblua.a

编辑:已对此进行更正

g++ main.cpp -Llib -llua

Lua库已安装在我的系统(Linux)上,但是尽管我在命令行中包含了库,但链接器仍找不到luaL_newstate()的定义:

main.cpp:(.text+0x2b): undefined reference to `luaL_newstate()'

任何Lua函数都会发生这种情况。我真的不知道出了什么问题,到目前为止,在Linux中导入库还是非常简单的。我似乎不熟悉在项目中使用库的问题,但找不到非常有用的文档。预先谢谢你。

1 个答案:

答案 0 :(得分:2)

-L选项指定用于保存库文件的文件夹;尝试g++ main.cpp -Llib -llua

还将Lua标头的#include包装到extern "C"中:

extern "C" {
  #include <lualib.h>
  #include <lauxlib.h>
  #include <lua.h>
}