msvcrt — MS Visual C ++ Runtime Library ошибка при запуске — какие-либо приемы отладки?

При запуске моего приложения я получаю диалоговое окно с ошибкой ниже. Я так понимаю, это указывает на проблему с загрузкой библиотеки времени выполнения. Проблема в том, что я не вижу способа получить более конкретную информацию. Какая библиотека? Какая именно проблема возникла при загрузке? и т. д. Просмотрщик системных событий не имеет записей для него. Есть ли какие-то хитрости, чтобы выяснить, какую именно библиотеку она пыталась загрузить, когда обнаружила ошибку и в чем заключалась конкретная проблема?


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.

1

Решение

Используйте SysInternals Process Monitor для контроля доступа к файловой системе. Фильтруйте по имени процесса и операции (CreateFile), чтобы увидеть, какие DLL процесс не может найти.

3

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

Это может указывать на неправильную версию msvcr * .dll.

Вы можете попробовать Dependency Walker (http://www.dependencywalker.com/) чтобы узнать, где это связано.

1

Убедитесь, что у вас есть отладочная версия кода, к которому вы пытаетесь присоединиться. В меню «Отладка» выберите «Присоединить к процессу». Использовать processID —

Также проверьте это —http://support.microsoft.com/kb/235434
Разрешение 1

Вы должны иметь возможность подключиться к процессу с помощью диспетчера задач:
Включить своевременную отладку (JIT):
В Visual C ++ в меню Сервис выберите пункт Параметры.
На вкладке «Отладка» убедитесь, что выбрана «Отладка по времени».
Запустите диспетчер задач и выберите процесс для подключения. Щелкните правой кнопкой мыши и выберите «Отладка».

Разрешение 2

Запустите диспетчер задач и получите идентификатор процесса, который вы хотите отладить.
В командной строке введите следующее: msdev -p
Это запустит Visual C ++ и подключится к указанному процессу.

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