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

我在尝试使用以下的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。

点赞
用户2157240
用户2157240

你应该设置 LuaJIT 库的路径,看下面的图片 enter image description here

2013-03-31 15:40:55
用户44000
用户44000

一般而言,你应该使用与你的应用程序相同的编译器来编译所有的库。MinGW 会生成 .a 库文件,而 MSVC 通常会输出 .lib 库文件。

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

2013-03-31 15:45:15