我想在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的软件包中。
我不知道如何做到这一点在C :: B,但你必须链接lua库。或者,您也可以将源文件包含到您的项目中,但那不是“正确”的方式。像任何其他库一样链接库。 – pschulz
@pschulz我认为Lua的设计是为了让你可以添加源文件。 – immibis
@pschulz是否有一个一般的解释如何链接库?每次我搜索这个时,我都会在论坛上得到模糊的解释,但是从来没有写得很好的一步一步的教程。这让我觉得,当我学习这门语言时,我错过了一些微不足道的东西。之前我设立SDL时,我很幸运,因为Lazyfoo详细解释了一切。此时,我将所有.h文件包含在包含库中,并将所有.c文件放在.cpp文件旁边,但仍然收到相同的错误。 – Letokteren