При запуске моего приложения я получаю диалоговое окно с ошибкой ниже. Я так понимаю, это указывает на проблему с загрузкой библиотеки времени выполнения. Проблема в том, что я не вижу способа получить более конкретную информацию. Какая библиотека? Какая именно проблема возникла при загрузке? и т. д. Просмотрщик системных событий не имеет записей для него. Есть ли какие-то хитрости, чтобы выяснить, какую именно библиотеку она пыталась загрузить, когда обнаружила ошибку и в чем заключалась конкретная проблема?
Microsoft Visual C++ Runtime Library
Runtime Error!
Program: exe path
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.*
В настоящее время мой подход к работе с зависимостями lib во время выполнения состоит в том, чтобы сканировать каталог установки, извлекать встроенные манифесты для файлов .dll и .exe, а затем генерировать файлы .config и .2.config для перенаправления на второстепенные версии lib runtime, с которым я отправляю. В прошлом это всегда заставляло вещи работать. Не так в этом случае.
Это может быть несколько усложнено тем фактом, что вызывающий код является нативным C ++, но некоторые библиотеки DLL используют .NET. Я называю C ++ API, но в итоге он использует некоторые библиотеки DLL, которые сами используют .NET.
Используйте SysInternals Process Monitor для контроля доступа к файловой системе. Фильтруйте по имени процесса и операции (CreateFile), чтобы увидеть, какие DLL процесс не может найти.
Это может указывать на неправильную версию msvcr * .dll.
Вы можете попробовать Dependency Walker (http://www.dependencywalker.com/) чтобы узнать, где это связано.
Убедитесь, что у вас есть отладочная версия кода, к которому вы пытаетесь присоединиться. В меню «Отладка» выберите «Присоединить к процессу». Использовать processID —
Также проверьте это —http://support.microsoft.com/kb/235434
Разрешение 1
Вы должны иметь возможность подключиться к процессу с помощью диспетчера задач:
Включить своевременную отладку (JIT):
В Visual C ++ в меню Сервис выберите пункт Параметры.
На вкладке «Отладка» убедитесь, что выбрана «Отладка по времени».
Запустите диспетчер задач и выберите процесс для подключения. Щелкните правой кнопкой мыши и выберите «Отладка».
Разрешение 2
Запустите диспетчер задач и получите идентификатор процесса, который вы хотите отладить.
В командной строке введите следующее: msdev -p
Это запустит Visual C ++ и подключится к указанному процессу.