2013-03-31 34 views
3

我想简单地使用下面的C++代码如何链接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-使BUILDMODE =静态的。它给了我一个很好的“成功构建LuaJIT”。

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

其他库直接命令:D:\ Programming \ LuaJIT Source \ LuaJIT-2.0.1 \ src 其他包含直接命令:D:\ Programming \ LuaJIT Source \ LuaJIT-2.0。 1 \ src

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

回答

1

的PIC一般情况下,你应该编译使用相同的编译器为您的应用程序的所有存储库。 MinGW生成.a库存档,而MSVC通常输出.lib存档。

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

+0

谢谢,这工作,我不得不添加此:#pragma评论(lib,“lua51.lib”) – user1830431

+0

嗨。我尝试使用msvc编译luajit,就像它在安装说明中所说的那样。但我总是失败。我只是无法从.net命令提示符启动msvcbuild命令。有谁知道我在做什么错? – SuperYegorius

0

您应该设置路径LuaJIT库,见下文 enter image description here