我正在尝试编写一些可以从Lua运行的C ++函数。但是,当我尝试导入头文件时,我收到以下错误:
Undefined symbols for architecture x86_64:
"_luaL_loadfilex", referenced from:
_main in main.o
"_luaL_newstate", referenced from:
_main in main.o
"_luaL_openlibs", referenced from:
_main in main.o
"_lua_close", referenced from:
_main in main.o
"_lua_pcallk", referenced from:
_main in main.o
"_lua_pushcclosure", referenced from:
_main in main.o
"_lua_setglobal", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已将文件路径添加到构建设置中的标题搜索路径选项。
以下是导入代码:
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
我做错了什么?
答案 0 :(得分:1)
对于第一个工作版本,获取库here,将头文件和 .a
文件解压缩到与具有代码的项目文件相同的目录中发布在你的问题中,然后尝试正常编译和链接。
您可以在问题中保留本地参考:
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
稍后,如果需要,您可以优化您的环境。
答案 1 :(得分:1)
您获得的错误是链接错误而不是编译错误。链接器(称为“ld”)抱怨它无法解析与Lua相关的符号。确保你的link命令中有-llua52,所以你的库链接到Lua共享库(你的系统上可能是-llua或-llua5.2),并通过-Lpath / to / Lua告诉链接器在哪里找到lib / LIB /文件夹。