Предпосылка: я бы хотел, чтобы мое приложение на C ++ не зависело ни от чего Microsoft Visual C++ redistributable
, так что я могу отправить свой исполняемый файл, который будет работать из коробки.
Что я сделал первым: переключил библиотеку времени выполнения на Multithread (/MT)
от DLL Multithread (/MD)
во избежание необходимости msvcr110.dll
(и разве VS 2013 не требует версии 120, так как это версия компилятора?). Для этого мне также пришлось перекомпилировать другую библиотеку, которую я использую, с той же библиотекой времени выполнения, и это сработало. У меня был мой .exe, который можно было запускать где угодно без проблем (или я не знал об этом, хаха).
Затем я добавил некоторые функции, которые используют LuaJIT. Я построил LuaJIT по msvcbuild.bat
предоставляется с пакетом, и он работал как шарм, но теперь мой исполняемый файл требует msvcr110.dll
бежать. Я думаю, это потому, что LuaJIT был скомпилирован с флагом / MD, но я хотел бы знать, есть ли правильный способ сделать то, что я хочу.
Я не проверял это, но вам, скорее всего, нужно использовать флаг / MT на каждой части компиляции, которую вы делаете. В этом случае и ваша основная программа, и LuaJIT. В этом файле msvcbuild.bat (https://github.com/luvit/luajit-2.0/blob/master/src/msvcbuild.bat) вы можете видеть, что они явно указывают / MD (строка 17). Мне кажется, это твоя проблема. Измените его на / MT и посмотрите.
Ты должен бежать msvcbuild.bat с статический параметр командной строки.