Как построить и связать LuaJIT статически (VS 2013)

Предпосылка: я бы хотел, чтобы мое приложение на C ++ не зависело ни от чего Microsoft Visual C++ redistributable, так что я могу отправить свой исполняемый файл, который будет работать из коробки.

Что я сделал первым: переключил библиотеку времени выполнения на Multithread (/MT) от DLL Multithread (/MD) во избежание необходимости msvcr110.dll (и разве VS 2013 не требует версии 120, так как это версия компилятора?). Для этого мне также пришлось перекомпилировать другую библиотеку, которую я использую, с той же библиотекой времени выполнения, и это сработало. У меня был мой .exe, который можно было запускать где угодно без проблем (или я не знал об этом, хаха).

Затем я добавил некоторые функции, которые используют LuaJIT. Я построил LuaJIT по msvcbuild.bat предоставляется с пакетом, и он работал как шарм, но теперь мой исполняемый файл требует msvcr110.dll бежать. Я думаю, это потому, что LuaJIT был скомпилирован с флагом / MD, но я хотел бы знать, есть ли правильный способ сделать то, что я хочу.

3

Решение

Я не проверял это, но вам, скорее всего, нужно использовать флаг / MT на каждой части компиляции, которую вы делаете. В этом случае и ваша основная программа, и LuaJIT. В этом файле msvcbuild.bat (https://github.com/luvit/luajit-2.0/blob/master/src/msvcbuild.bat) вы можете видеть, что они явно указывают / MD (строка 17). Мне кажется, это твоя проблема. Измените его на / MT и посмотрите.

4

Другие решения

Ты должен бежать msvcbuild.bat с статический параметр командной строки.

5

По вопросам рекламы [email protected]