Я пытаюсь использовать Lua в C++, но я не могу скомпилировать свой код. Я использую последнюю версию Lua, которая на данный момент составляет 5.3. Моя IDE - это Code :: Blocks. До сих пор я следовал руководства, подобные этим: https://eliasdaler.wordpress.com/2013/10/11/lua_cpp_binder/ http://gamedevgeek.com/tutorials/getting-started-with-lua/Использование Lua в C++
Однако они не объясняют многое о том, как настроить Lua в C :: B. Я загрузил как двоичный ZIP, так и источник с веб-сайта Lua. Я не уверен, куда поместить файлы из папки 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 из источника? Или есть что-то, что мне нужно добавить в «Другие варианты компоновщика» в меню «Параметры сборки проекта»?
Edit:
В то же время я нашел этот вопрос: Lua 5.3 undefined references
Кажется, я должен поставить -llua к «Opther опции компоновщика», но есть нет .a, .so или .lib, включенные в пакеты на lua.org.
Я не знаю, как это сделать в C :: B, но вам нужно связать библиотеки lua. Кроме того, вы также можете просто включить исходные файлы в свой проект, но это не «правильный» способ. Просто свяжите библиотеки, как и с любой другой библиотекой. – pschulz
@pschulz Я думал, что Lua был разработан так, чтобы вы могли просто добавить исходные файлы. – immibis
@pschulz Есть ли общее объяснение, как связать библиотеки?Каждый раз, когда я искал это, я получаю смутные объяснения на форумах, но никогда не хорошо написанный пошаговый учебник. Это действительно дает мне ощущение, что я пропустил что-то очень тривиальное, когда я изучил язык. Когда я настраивал SDL раньше, мне повезло, так как Lazyfoo объясняет все очень подробно. На этом этапе у меня есть все мои файлы .h в библиотеке include и все файлы .c рядом с файлом .cpp, но я все равно получаю ту же ошибку. – Letokteren