连接器找不到 Lua 库定义

所以,我相对来说是 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 中导入库一直相当简单,直到现在。这似乎是我不熟悉在项目中使用库的问题,但我找不到非常有用的文档。提前感谢您。

点赞
用户1442917
用户1442917

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

此外,将Lua头文件的 #include 包装到 extern "C" 中:

extern "C" {
  #include <lualib.h>
  #include <lauxlib.h>
  #include <lua.h>
}
2019-09-17 05:04:51