Я пытался сделать это в течение дня. Я прочитал документацию и искал онлайн помощь. Я просто не могу понять это между различными версиями boost / lua / luabind, используемыми с предварительно скомпилированными заголовками, и VS2010 против VS2012.
Я нашел отличный сайт здесь
http://blog.nuclex-games.com/tutorials/cxx/luabind-introduction/
но когда я следую этим инструкциям, я получаю ошибки LNK2019 (я предполагаю, потому что он собирает luabind / boost / lua для VS2010.
Я также нашел это, http://urbsch.at/?read=1 Я взял проект и изменил адреса на свои файлы boost / lua, и он скомпилировался нормально, но когда я попытался запустить свой проект, использующий luabind, я все еще получил ошибки LNK2019.
Я использую Visual Studio 2012. Если бы кто-то мог перечислить некоторые пошаговые инструкции, я был бы очень благодарен. В том числе что скачивать и куда и что добавлять в свойствах проекта. Потому что в этот момент я уверен, что я испорчу это, если это не надежно.
Это одна из 49 ошибок, с которыми я часто сталкиваюсь.
1> ScriptManager.obj: ошибка LNK2019: неразрешенный внешний символ _lua_gettop, указанный в функции «public: __thiscall luabind :: adl :: index_proxy :: index_proxy (класс luabind :: adl :: object const &, struct lua_State *, char const (&) [13]) «(?? $? 0 $$ BY0N @ $$ CBD @? $ Index_proxy @ Vobject @ adl @ luabind @@@ adl @ luabind @@ QAE @ ABVobject @ 12 @ PAUlua_State @@ AAY0N @ $$ CBD @ Z)
Хорошо, я понял это (некоторое время назад). Вот полные, пошаговые, дурацкие инструкции о том, как заставить это работать.
1) Загрузите демо здесь http://blog.nuclex-games.com/tutorials/cxx/luabind-introduction/
2) Создайте новый файл (скажем, «Детали») для хранения трех частей, необходимых для luabind.
3) Откройте справочную папку из вышеприведенной загрузки и переместите эти 3 папки в папку «Parts», которую вы только что создали.
4) Теперь вам нужно перекомпилировать новые .lib файлы для Lua и LuaBind. Откройте файл LibrarySources.7z из загрузки выше.
4) Создайте новый проект Visual Studio 2012 с именем Lua, откройте распакуйте все файлы из «LibrarySources.7z / lua-5.2.0 / src» в место, где Visual Studio обычно помещает ваши файлы .cpp и .h.
5) Добавьте файлы в проект (файлы .h в папке заголовка проводника проекта и файлы .c в папке источника).
6) Перейдите в SolutionExplorer-> Properties-> General-> Configuration_Type и установите для него статическую библиотеку (.lib)
7) Скомпилируйте проект.
8) Перейдите в папку debug вашего проекта lua и подайте файл lua.lib, который вы создали.
9) Теперь перейдите к созданному вами блоку «Parts» в «Parts / Lua». Там вы должны увидеть 2 папки с msvc-10.0-x64 / 86, создать новую с msvc-11.0-x86 и поставить lua. lib файл, который вы только что создали в этом.
10) Для luabind вам нужно сделать то же самое, однако вам нужно только извлечь папку src из luabind в ваш проект.
11) Теперь в свойствах проекта C / C ++ -> Дополнительные каталоги включения добавьте «C: / Parts / boost / include», «C: / Parts / lua / include» и «C: / Parts / luabind / include»
12) Теперь перейдите в Linker-> General-> Additional Library Directory и добавьте «C: /Parts/lua/msvc-11.0-x86»
13) Теперь вернитесь в обозреватель решений-> Свойства-> Общие и измените его на статическую библиотеку.
14) Скомпилируйте его, перейдите в его папку отладки и добавьте созданный вами luabind.lib в parts / luabind / msvs-11.0-x86, как вы это сделали для lua.
15) Теперь в вашем проекте вы хотите использовать luabind с Go to Properties-> C / C ++ -> General и добавить «C: / Parts / boost / include», «C: / Parts / lua / include» и « C: / Детали / Luabind / включают»
16) Перейдите в properties-> linker-> general-> Additional Library Directory и добавьте адреса к обоим .lib-файлам, которые вы только что создали.
Плавник.
Я не могу опубликовать полный ответ прямо сейчас, потому что я разговариваю по телефону, но я должен был кое-что сделать, чтобы luabind работал правильно.
Luabind 0.9.1 не работает с lua 5.2.x. Только с 5.1.x.
Если вы собираете lua, не используйте компилятор c ++. Lua bind использует extern C для импорта заголовков lua, а использование c ++ вызовет некоторые конфликты.
Если вы используете предварительную сборку lua, убедитесь, что она была собрана с vs2012.