如何将LuaJIT与C ++程序链接?

时间:2013-03-31 15:37:02

标签: c++ linker luajit

我正在尝试简单地使用以下C ++代码

lua_State *state = luaL_newstate();

luaL_openlibs(state);

lua_getglobal(state, "_G");
lua_pushstring(state, "print");
lua_pushnumber(state, 4.5);
lua_call(state, 2, 1);

lua_close(state);

我收到链接器错误。所有上述函数调用都会生成链接器错误:

1>main.obj : error LNK2001: unresolved external symbol _luaL_newstate
1>main.obj : error LNK2001: unresolved external symbol _lua_pushnumber
1>main.obj : error LNK2001: unresolved external symbol _lua_call
1>main.obj : error LNK2001: unresolved external symbol _lua_pushstring
1>main.obj : error LNK2001: unresolved external symbol _luaL_openlibs
1>main.obj : error LNK2001: unresolved external symbol _lua_getfield
1>main.obj : error LNK2001: unresolved external symbol _lua_close

标题包含是使用以下代码完成的:

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

我使用MinGW“安装”了LuaJIT,mingw32-make BUILDMODE = static。它给了我一个很好的“成功构建LuaJIT”。

我正在使用VS2012编译代码。我已经设置了这样的链接器:

其他图书馆指令:D:\ Programming \ LuaJIT Source \ LuaJIT-2.0.1 \ src 附加包含指令:D:\ Programming \ LuaJIT Source \ LuaJIT-2.0.1 \ src

我在windows7机器上,我正在使用他们的github页面上的最新LuaJIT。

2 个答案:

答案 0 :(得分:1)

通常,您应该使用与应用程序相同的编译器编译所有库。 MinGW生成.a库存档,而MSVC通常输出.lib存档。

所以:使用MSVC重新编译LuaJIT,将luajit.lib所在的路径添加到链接器路径,并将luajit.lib添加到要链接到应用程序的库列表中。

答案 1 :(得分:0)

您应该设置LuaJIT库的路径,请参见下面的图片 enter image description here