我正在尝试简单地使用以下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
header 包含是通过以下代码完成的:
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。
最佳答案
通常,应该使用与应用程序相同的编译器来编译所有库。 MinGW生成一个.a存档,而MSVC通常输出一个.lib存档。
因此:使用MSVC重新编译LuaJIT,将luajit.lib所在的路径添加到链接器路径,并将luajit.lib添加到要链接到您的应用程序的库列表。
关于c++ - 如何将LuaJIT与C++程序链接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15731110/