【发布时间】:2013-05-08 04:04:48
【问题描述】:
我正在尝试使用 VS2012 将 lua 静态链接到我的 C++ 应用程序中。我从 sourceforge 下载了 vs11_lib 文件,并为这个文件 lua52.lib 添加了链接器依赖项。我现在在尝试编译时遇到各种链接错误,我很确定我错过了一步。同样,我是静态地执行此操作,因为我希望我的应用程序独立运行。任何指针将不胜感激!
【问题讨论】:
标签: linker lua static-libraries
我正在尝试使用 VS2012 将 lua 静态链接到我的 C++ 应用程序中。我从 sourceforge 下载了 vs11_lib 文件,并为这个文件 lua52.lib 添加了链接器依赖项。我现在在尝试编译时遇到各种链接错误,我很确定我错过了一步。同样,我是静态地执行此操作,因为我希望我的应用程序独立运行。任何指针将不胜感激!
【问题讨论】:
标签: linker lua static-libraries
最好的方法是自己构建可嵌入的 Lua。下载你想要的版本的源文件,在VS2012中创建一个静态库项目,复制源文件(*.h和*.c到VS项目,不是VS解决方案)并将所有源文件添加到项目中,除了luac.c和lua.c,它们是独立可执行文件而不是嵌入式库所必需的(无论如何它们在一个项目中相互冲突)。
之后编译发布版本,你就得到了可以链接的 lua5.x.lib。如果它仍然不起作用,那么问题可能是您在错误的位置添加了链接器依赖项。
【讨论】:
print.c。
Lua 源代码可以编译为 C 或 C++。我认为您尝试使用的 lib 文件被编译为 C,并且您将它们的头文件包含为 C++。结果将是函数的名称不同;因此,链接错误。
如果您在 C++ 文件中使用 C lib,请像这样包装 lib 的标头:
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
有关在 Visual Studio 中使用 Lua 的更详细说明,请参阅article。
更新:
正如@lhf 在评论中所说,Lua 的较新发行版提供了一个 C++ 标头 lua.hpp,它做同样的事情。它在 PIL 中针对较旧的发行版进行了描述。
【讨论】:
lua.hpp=,它是源分发自带的。