链接器找不到 Lua 库定义
Posted
技术标签:
【中文标题】链接器找不到 Lua 库定义【英文标题】:Linker can't find Lua library definition 【发布时间】:2019-09-17 04:44:15 【问题描述】:所以,我对 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 中导入库非常简单。这似乎是我不熟悉在我的项目中使用库的问题,但我找不到非常有用的文档。提前谢谢你。
【问题讨论】:
所以这个问题已经解决了,但是还需要澄清一下;发生此问题是因为我将 Lua 库构建为 C 并在 C++ 中使用它。一个技巧肯定是用 extern "C" 包装所有这些头文件,但是,Lua 文档建议您应该简单地使用 "#include-L
选项指定保存库文件的文件夹;试试g++ main.cpp -Llib -llua
还将 Lua 标头的 #include
包装到 extern "C"
:
extern "C"
#include <lualib.h>
#include <lauxlib.h>
#include <lua.h>
【讨论】:
感谢您的澄清。然而,问题似乎仍然存在。 您必须添加 -v 选项才能查看有关确切链接器命令的详细信息,以便我们可以看到提供的路径。能否将 lib/liblua.a 复制到本地文件夹,看看是否有帮助? 也试过了,但没有运气。还尝试将 .a 库复制到 /usr/lib。控制台信息如下:pastebin.com/CHgkkSsi 尝试将 Lua 标头的 #include 包装到extern "C"
: extern "C" #include <lualib.h> #include <lauxlib.h> #include <lua.h>
我建议使用#include <lua.hpp>
,而不是使用extern "C"
。以上是关于链接器找不到 Lua 库定义的主要内容,如果未能解决你的问题,请参考以下文章