2016-07-14 2 views
2

Я пытаюсь использовать 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.

+2

Я не знаю, как это сделать в C :: B, но вам нужно связать библиотеки lua. Кроме того, вы также можете просто включить исходные файлы в свой проект, но это не «правильный» способ. Просто свяжите библиотеки, как и с любой другой библиотекой. – pschulz

+0

@pschulz Я думал, что Lua был разработан так, чтобы вы могли просто добавить исходные файлы. – immibis

+0

@pschulz Есть ли общее объяснение, как связать библиотеки?Каждый раз, когда я искал это, я получаю смутные объяснения на форумах, но никогда не хорошо написанный пошаговый учебник. Это действительно дает мне ощущение, что я пропустил что-то очень тривиальное, когда я изучил язык. Когда я настраивал SDL раньше, мне повезло, так как Lazyfoo объясняет все очень подробно. На этом этапе у меня есть все мои файлы .h в библиотеке include и все файлы .c рядом с файлом .cpp, но я все равно получаю ту же ошибку. – Letokteren

ответ

0

Я мог бы, наконец, сделать код, упомянутый в вопросе, запустить. Вот что я сделал.

  1. Вместо загрузки источника с сайта Lua, я скачал последнюю LuaDist. Сайт также доступен на странице download Lua.org в категории Binaries.

  2. В этом почтовом индексе есть обычные папки include и lib.

  3. Я скопировал оба в соответствующие папки и установил путь для компилятора и компоновщика в меню «Параметры сборки».

  4. Затем, на вкладке «Настройки компоновщика», я добавил файл liblua.dll.a , который можно найти в каталоге lib. За последние два шага вы можете найти дополнительную помощь на SFML setup page.

  5. Для последнего шага я поместил файл liblua.dll рядом с скомпилированным исполняемым файлом .

Смежные вопросы