Я пытался выяснить, почему сборка отладки взорвалась с ошибкой события «зависимая сборка microsoft.vc80.debugcrt не может быть найдена».
После удаления всего (ничего, кроме .cpp или .h) и воссоздания решения проблема все еще была.
Поиск в Google оказался бесплодным, и переустановка VS не дала никаких изменений.
У меня были библиотеки в C: \ WINDOWS \ WinSxS \ x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c.
Я открыл файл \ debug \ .exe.intermediate.manifest, и в нем было 2 записи (зависимая сборка):
1-я: name = 'Microsoft.VC80.DebugCRT' version = '8.0.50608.0'
2-я: name = Версия 'Microsoft.VC80.DebugCRT' = '8.0.50727.762'
Если я удалю один и изменю другой на name = 'Microsoft.VC80.DebugCRT' version = '8.0.50727.42'
Я могу получить сборку, которая запустится.
Конечно, у меня был установлен VS2008, но что контролирует версии? или как мне "прилепить" нужную версию отладочной dll.
VS2008 был деинсталлирован через панель управления.
РЕДАКТИРОВАТЬ: ничего не найдено в реестре, если выполняется поиск DebugCRT.
путь к среде указывает на папки VS8.
В папке c: \ windows \ winsxs \ policy есть только 1 папка DebugCRT
(8.0 .50.727.42)
В папке c: \ windows \ winsxs \ manifestests есть только .42 версия файлов .cat и .manifest
Файл .manifest (в указанной выше папке манифеста) имеет version = "8.0.50727.42 "
Уточнение: в файле манифеста есть 2 записи «зависимой сборки», каждая с разными версиями, а не .42. Я могу удалить одну запись и изменить версию другой, чтобы она соответствовала .42, чтобы запустить отладочную сборку.
EDIT2: я также использую boost, а внутри DLL есть версия .762