静态链接lua的问题

时间:2013-05-08 04:04:49

标签: linker lua static-libraries

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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中描述了较旧的发行版。