2

我正在尝试使用 VS2012 将 lua 静态链接到我的 C++ 应用程序中。我从 sourceforge 下载了 vs11_lib 文件,并为此文件 lua52.lib 添加了链接器依赖项。我现在在尝试编译时遇到各种链接错误,我很确定我错过了一步。同样,我是静态地执行此操作,因为我希望我的应用程序独立运行。任何指针将不胜感激!

4

2 回答 2

5

最好的方法是自己构建可嵌入的 Lua。下载所需版本的源文件,在 VS2012 中创建静态库项目,将源文件(*.h 和 *.c 复制到 VS 项目,而不是 VS 解决方案)并将所有源文件添加到项目中,除了luac.cand lua.c,需要独立的可执行文件而不是嵌入式库(无论如何它们在一个项目中相互冲突)。

之后编译发布版本,你就得到了可以链接的 lua5.x.lib。如果它仍然不起作用,那么问题可能是您在错误的位置添加了链接器依赖项。

于 2013-05-08T06:18:01.410 回答
2

Lua 源代码可以编译为 C 或 C++。我认为您尝试使用的 lib 文件被编译为 C,并且您将它们的头文件包含为 C++。结果将是函数的名称不同;因此,链接错误。

如果您在 C++ 文件中使用 C lib,请像这样包装 lib 的标头:

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

有关将 Lua 与 Visual Studio 结合使用的更详细说明,请参阅本文

更新:

正如@lhf 在评论中所说,Lua 的较新发行版提供了一个 C++ 头文件lua.hpp,它做同样的事情。它在PIL中针对较旧的发行版进行了描述。

于 2013-05-08T11:27:04.933 回答