Отладочная сборка не может найти отладочные библиотеки времени выполнения

У меня есть программа Visual Studio 2008 (SP1), отладочная сборка, 32 бита, которая не может найти отладочные библиотеки DLL времени выполнения (многопоточные библиотеки отладки).

Но сумасшедшая вещь заключается в том, что зависящий от этого файл.exe показывает необходимые библиотеки DLL как присутствующие (а также отсутствующие). На самом деле похоже, что он пытается загрузить эти DLL дважды.

Ниже приведена ссылка на снимок экрана с утилитой figure.exe, показывающий, о чем я говорю, — анализ библиотеки, являющейся частью решения.

Когда я запускаю программу, я получаю «Программа не может запуститься, потому что MSVCP90D.dll отсутствует на вашем компьютере. Попробуйте переустановить программу, чтобы решить эту проблему».

Если я зайду в каталог sxs и скопирую «отсутствующие» библиотеки DLL в тот же каталог, что и бинарный файл, программа запустится.

В манифесте приложения указываются правильные версии DLL (что подтверждается тем, что они находились в зависимости от.exe). Я проверил манифесты этой версии среды выполнения, и на мой неопытный взгляд это выглядит вполне законно.

Сам бинарный файл показывает ту же проблему, что и DLL, проверенная в связанном образе, но также и при отсутствии MSVCP90D.DLL (и все же присутствующем).

Я пробовал строить с внутренними / внешними манифестами, включая и выключая инкрементное связывание, как и везде, но безрезультатно. Я бы попытался связать среду выполнения без DLL, однако библиотеки, которые я использую, совместно используются многими десятками решений, поэтому изменение способа их построения на самом деле не вариант (если, конечно, это не является единственным решением из-за к известной проблеме, что мой поиск в Google не появился).

Я попытался запустить sxstrace, но большую часть времени вывод пустой (!), Когда он не пустой, он не показывает ошибок.

Я попытался использовать windbg, но ничего не получилось, так как я не особенно разбирался в инструменте и не был уверен, что искал.

Я работаю на 64-битных Windows 7. Одна из моих первых мыслей заключалась в том, что установка VS2005, 2008 и 2010 на моем компьютере вызывала некоторые странные проблемы, но я не нашел никаких доказательств в поддержку этого предположения.

(PS. Похоже, похожая проблема, как msvcp90d.dll отсутствует msvcr90d.dll который, насколько я вижу, на самом деле не был решен, а также упоминает C # — мой проект — чистый C ++).

PPS. Похоже, похожая проблема, как "неверная конфигурация приложения" а также "неправильная конфигурация" работает VS2008 64-битной отладочной сборки
Однако эта проблема была связана со сторонними библиотеками и 64-битными сборками.

Кроме того, «решение» для копирования «отсутствующих» DLL вручную из SxS в каталог bin (что, как упоминалось выше, помогает) — это не решение вообще — в лучшем случае это обходной путь.

1

Решение

В распространяемый пакет не входят файлы DLL отладки. Вам нужно установить Visual Studio, чтобы получить их.

4

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

«Отладочные версии приложения не подлежат распространению, и ни одна из отладочных версий различных библиотек динамической компоновки (DLL) Visual C ++ не подлежит распространению. Отладочные версии приложения и библиотеки Visual C ++ могут быть развернуты только на другом компьютере, находящемся внутри вашей разработки. сайт с единственной целью отладки и тестирования вашего приложения на компьютере, на котором не установлен Visual C ++ 2005 «.

Вот тема на msdn о запуске отладочных сборок «Подготовка тестового компьютера к запуску отладочного исполняемого файла» (приведены решения и примеры):

http://msdn.microsoft.com/en-us/library/aa985618(v=vs.90).aspx

Вы можете выбрать свою версию визуальной студии (с 2005 по 2013 год).

1

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