Исполняемый файл C++ - MSVCR100.dll не найдена ошибка
Я скачал и скомпилировал приложение C++ с открытым исходным кодом, Frhed.
Когда я запускаю скомпилированную версию, она требует MSVCR100 и несколько других DLL-файлов (часть распространяемого Visual C++). Однако когда я запускаю исходный предварительно скомпилированный исполняемый файл Frhed, он запускается без установленного распространяемого пакета C++.
Нужно ли изменять какие-либо параметры компиляции, чтобы отсоединить программу от распространяемых библиотек C++?
2 ответа
Исходная программа, вероятно, статически связана, в то время как вы пытаетесь динамически связать ваш исполняемый файл, что приводит к уменьшению размера файла, но зависимости от функций внутри MSVCR100.dll
(v10 из библиотеки Microsoft C Runtime), которая была бы включена в исполняемый файл, если бы вы статически связывались.
Чтобы статически связать библиотеки DLL, перейдите в свойства своего проекта и измените режим сборки с MD
в MT
, В Visual Studio 2010/2012 это свойство проекта - C/C++ -> Генерация кода -> Библиотека времени выполнения.
Короткий ответ - да, чем дольше, тем дольше.
Библиотека msvcr100.dll
является версией 10.0 (то есть версией Visual Studio 2010) реализации DLL среды выполнения C, которую вы, вероятно, запросили с помощью параметра компиляции /MD. Чтобы избежать использования динамически связанной версии среды выполнения, вы можете использовать вместо нее параметр /MT и статически связывать среду выполнения.
Кроме того, вы можете распространять msvcr100.dll (и другие файлы) вместе с вашей программой.