尝试将 Lua 头文件导入 C++ 项目时,出现链接器错误?

我正在尝试编写一些可以在 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)

我已经将文件路径添加到 Build Settings 中的 Header Search Paths 选项中。

这是导入代码:

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

我做错了什么?

点赞
用户152016
用户152016

首先,获取这个库的初始工作版本 here,将头文件 .a 文件提取到与包含发布在您的问题中的代码的项目文件相同的目录中,然后尝试正常进行编译和链接。

您可以在问题中保留引用本地文件的方式:

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

如果需要,稍后可以优化您的环境。

2014-02-06 23:45:43
用户869951
用户869951

你收到的错误是链接错误而不是编译错误。链接器(称为“ld”)抱怨它无法解析与Lua相关的符号。请确保在链接命令中使用了-llua52,以便您的库链接到Lua共享库(在您的系统上可能是-llua或-llua5.2),并通过-Lpath/to/Lua/lib/folder告诉链接器在哪里找到该库。

2014-02-07 00:50:32