2016-07-14 50 views
2

我想在C++中使用Lua,但是我无法编译我的代码。我正在使用目前为5.​​3的最新版本的Lua。我的IDE是Code :: Blocks。到目前为止,我在下面的指南这样的: https://eliasdaler.wordpress.com/2013/10/11/lua_cpp_binder/ http://gamedevgeek.com/tutorials/getting-started-with-lua/在C++中使用Lua

但是他们没有解释很多关于如何设置的Lua用C :: B。我已经从Lua的网站下载了二进制zip和源代码。我不确定从src文件夹放置文件的位置。到目前为止,我已经把lauxlib.h的lua.h的luaconf.h和lualib.h到包括目录,并用在main.cpp中下面的代码:

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

到目前为止我只是试图运行下面的小片段:

lua_State* L; 
L = luaL_newstate(); 
luaL_openlibs(L); 
luaL_dofile(L, "test.lua"); 
lua_close(L); 

然而,我总是在第一线得到一个错误。我目前收到的错误表明,该引用未定义为'luaL_newstate'。

也许我应该从源文件放在lib目录中的一些文件?或者有什么我必须添加到“项目构建选项”菜单中的“其他链接器选项”?

编辑:

在平均时间,我发现这样一个问题: Lua 5.3 undefined references

看来我得把-llua到“Opther连接选项”,但目前还没有.a,.so或.lib文件包含在lua.org的软件包中。

+2

我不知道如何做到这一点在C :: B,但你必须链接lua库。或者,您也可以将源文件包含到您的项目中,但那不是“正确”的方式。像任何其他库一样链接库。 – pschulz

+0

@pschulz我认为Lua的设计是为了让你可以添加源文件。 – immibis

+0

@pschulz是否有一个一般的解释如何链接库?每次我搜索这个时,我都会在论坛上得到模糊的解释,但是从来没有写得很好的一步一步的教程。这让我觉得,当我学习这门语言时,我错过了一些微不足道的东西。之前我设立SDL时,我很幸运,因为Lazyfoo详细解释了一切。此时,我将所有.h文件包含在包含库中,并将所有.c文件放在.cpp文件旁边,但仍然收到相同的错误。 – Letokteren

回答

0

我终于可以使问题中提到的代码运行。这就是我所做的。

  1. 而是从下载Lua的网站源码,我下载了最新 LuaDist。该网站还可以通过二进制类别下的Lua.org的 download页面访问。

  2. 在该zip中,有通常的include和lib文件夹。

  3. 我已经将两者都复制到相应的文件夹中,并在编译选项菜单下为编译器和链接器设置路径为 。

  4. 然后,在链接器设置选项卡下,我添加了liblua.dll.a 文件,该文件可以在lib目录中找到。最后两步,您可以在SFML setup page找到更多帮助。

  5. 最后一步,我将liblua.dll文件放在 编译的可执行文件旁边。