Visual Studio 2013 MSVCR110d.dll отсутствует

30403
Doug

Я не совсем уверен, относится ли это к SuperUser или StackOverflow, но, похоже, это не проблема кодирования, поэтому я собираюсь поработать с этим.

Я начал работать над игрой на C ++ с использованием Visual Studio 2013 с использованием FreeGLUT и FreeImage. Я могу скомпилировать и запустить его на своем рабочем столе без проблем, но когда я пытаюсь скомпилировать тот же код на своем ноутбуке, я получаю сообщение об ошибке «msvcr110 d .dll отсутствует на вашем компьютере». После этого есть примерно 50% вероятность того, что Visual Studio зависнет, и я вынужден перезагрузить компьютер, поскольку диспетчер задач не может остановить процесс (еще одна проблема, над которой я до сих пор работаю).

Поиски в Google сказали мне установить Visual C ++ Redistributable 2012, однако он уже был установлен на этот ноутбук (как x86, так и x64) и переустановлен (с http://www.microsoft.com/en-us/download/details.aspx. ? id = 30679 ) не помогло вообще. Я также пытался установить Visual C ++ Redistributable 2013 (x86 и x64, http://www.microsoft.com/en-us/download/details.aspx?id=40784 ), но безрезультатно. Обе эти ссылки имеют функцию загрузки ARM. Я не уверен, что это такое, и попытка установить его приводит к появлению всплывающего сообщения о том, что я не могу установить его в этой версии Windows (Windows 8), поэтому я предполагаю, что мне это не нужно ,

Глядя в папку C: \ Windows \ SysWow64, я вижу msvcr110.dll, но не msvcr110 d .dll. Похоже, версия выпуска была установлена, но не отладка. Я вижу msvcr120 d .dll, какой должна быть версия 2013 года? Так не следует ли использовать Visual Studio 2013 вместо msvcr110 d .dll?

Запуск стандартного проекта C ++ HelloWorld не имеет этой проблемы, поэтому я предполагаю, что он должен иметь отношение к FreeGLUT или FreeImage. Однако он компилируется и запускается на моем рабочем столе без проблем, поэтому я считаю, что все закодировано и связано правильно. Я добавил каталоги include, каталоги библиотек (оба из которых были отлажены) и добавил opengl32.lib & FreeImaged.lib в качестве дополнительных зависимостей.

Установка Visual C ++ Redistributable не помогла, так есть ли другой способ решения этой проблемы? Должна ли Visual Studio 2013 вообще использовать msvcr110d.dll или она должна использовать msvcr120d.dll? Нужно ли устанавливать ARM со страницы загрузки MSVCR? Я использую 64-разрядную версию Windows 8 (также новый ноутбук, поэтому я не думаю, что есть какие-либо проблемы с коррупцией). Заранее спасибо за помощь.

Doug

4
Зачем вам нужна установка ARM, если вы работаете на оборудовании x86-64? Похоже, проблема в FreeGLUT или FreeImage. Если они с открытым исходным кодом, скомпилируйте их для поддержки x64 или x86 самостоятельно. VS2013 должен установить msvcr120.dll, которую вы сейчас ищете в 32-битном, а не в 64-битном каталоге. Ramhound 10 лет назад 0
Я не совсем уверен, что делает установка ARM, поэтому я спрашиваю, просто я уверен, что мне это не нужно. Я скомпилировал FreeImage и FreeGLUT, и они работают на моем рабочем столе, поэтому я считаю, что это работает правильно. Поскольку и мой рабочий стол, и ноутбук используют Visual Studio 2013, у них должен быть один и тот же компилятор, и мне не нужно перекомпилировать эти решения, верно? Я не очень знаком с C ++, но у меня такое впечатление. Doug 10 лет назад 0
Вторично распространяемые пакеты, такие как тот, который вы установили, не содержат отладочных версий библиотек DLL. Следовательно, вы не получите их. Они доступны только при установке Visual Studio. Однако, как только они у вас есть, вы можете скопировать их с вашей программой для тестирования. Tim 9 лет назад 0
Связанный: [Приложение выпуска ищет MSVCR110d.dll] (http://stackoverflow.com/questions/13851522/) and31415 9 лет назад 0

2 ответа на вопрос

4
Patrick Seymour

« Запуск стандартного проекта C ++ HelloWorld не имеет этой проблемы, поэтому я предполагаю, что он должен иметь какое-то отношение к FreeGLUT или FreeImage ».

Я думаю, что вы на правильном пути. Похоже, FreeGLUT или FreeImage компилируется в режиме отладки, и поэтому запрашиваются версии "D". Убедитесь, что вы используете компиляции релизов ваших зависимостей.

Я понял, что d-версии означают отладку, но я только начал этот проект. Программа с ошибкой была просто тестом «убедитесь, что я могу получить изображения, движущиеся и прочее». Так что я думаю, что было бы неплохо использовать отладочные компиляции, пока у меня действительно не будет чего выпустить. Это должно сделать ошибки кодирования намного легче найти, поскольку я делаю игру. Doug 10 лет назад 0
На DVD-диске VS2013 под пакетами у вас есть установщики MSI для сред отладки. Установите их. magicandre1981 10 лет назад 1
После монтирования .iso, который я скачал из VS2013, в каждой папке есть 2 папки / packages / vcRuntimeDebugD11 (_x86 / _amd64) с установщиком .msi. Однако, попытка запустить либо просто говорит мне использовать setup.exe, который, кажется, не помогает. В нем упоминаются другие параметры установки, перечисленные в файле ReadMe.htm, но я не могу найти это нигде в .iso. В каждой из этих папок также есть .cab-файл, содержащий несколько файлов ** 110d ** (одним из них является msvcr110d). Кажется, что файлы, которые я пропустил, там есть, есть ли способ заставить их установить? Можно ли как-нибудь вручную их извлечь? Doug 10 лет назад 0
То, к чему я стремился, было просто посмотреть, не является ли это причиной проблемы с отладочными DLL. Честно говоря, если на вашем ноутбуке отсутствуют отладочные библиотеки DLL, я бы заподозрил, что что-то не так с вашей установкой Studio. Patrick Seymour 10 лет назад 0
Я уже полностью переустановил Visual Studio (и это новый ноутбук, поэтому у Windows не должно быть проблем). Если нужные мне файлы находятся в .iso, есть ли другой способ их установить? Я не думаю, что я могу вручную извлечь их в определенный каталог, и у меня получится это волшебным образом? Doug 10 лет назад 0
0
Bryan

Если вы пытаетесь выполнить удаленную отладку (или, возможно, в других сценариях), вам может потребоваться изменить настройку библиотеки времени выполнения с Многопоточная отладочная DLL (/ MDd) -> Многопоточная отладка (/ MTd).

Вы можете добиться этого (в VS2012), щелкнув правой кнопкой мыши по своему проекту, выбрав Properties-> C++->, Code Generationа затем опуская Runtime Libraryопцию, и изменив ее на один из параметров без «DLL» (выберите свой параметр в зависимости от того, хочу режим отладки или выпуск режима генерации).

Надеюсь это поможет.