Любые идеи о том, как исправить ошибку инициализации Dll в Visual Studio 2019? - PullRequest
0 голосов
/ 21 апреля 2020

Впервые в программировании, и когда я работал над консольным приложением на c ++, мне не удалось открыть приложение для отладки. Он просто всплывает и говорит: «Приложение не удалось правильно запустить (0xc0000142)». Никаких кодов ошибок / предупреждений на visual studio тоже нет. Потратил последний час, пробуя различные решения, которые я читал на форумах и тому подобное. Полностью обновлено windows, обновлены драйверы nvidia, изменены значения в regedit, проверен межсетевой экран и т. Д. c. Единственное, о чем я могу думать, это запустить sf c и, возможно, придется переустановить windows (что я не хочу делать). В выходных данных Visual Studio после закрытия всплывающего окна это показывает, что это происходит из-за сбоя инициализации DLL.

'tetris.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.
'tetris.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.
'tetris.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded.
'tetris.exe' (Win32): Unloaded 'C:\Windows\System32\KernelBase.dll'
'tetris.exe' (Win32): Unloaded 'C:\Windows\System32\kernel32.dll'
The thread 0x3678 has exited with code -1073741502 (0xc0000142).
The program '[7708] tetris.exe' has exited with code -1073741502 (0xc0000142) 'DLL Initialization Failed'.

Это показывает, что мое приложение успешно загружает kernal32.dll и KernalBase.dll, но ntdll.dll загружается, но не показывает, что он выгружен. Не совсем уверен, если это связано, хотя. Любая помощь очень ценится!

1 Ответ

1 голос
/ 21 апреля 2020

Ошибка 0xC0000142 - это STATUS_DLL_INIT_FAILED, что, вероятно, связано с отсутствующей зависимой DLL или отсутствующим экспортом функции в зависимость (например, из-за неожиданной версии DLL, которая не экспортирует ожидаемую функцию).

  • Попробуйте поискать в журнале событий (eventvwr.exe) все сообщения загрузчика, в которых может быть указано, что зависимость отсутствует или не загружена.
  • Используйте инструмент Зависимости проанализировать цепочку зависимостей вашего приложения на предмет отсутствия DLL или экспорта.
  • Попробуйте включить «Snaps Snaps» для вашего файла EXE, используя GFlags.exe , а затем проверьте выходные данные отладки в Visual Studio для указания того, что DLL не удалось загрузить.
  • Попробуйте использовать Process Monitor с фильтром, путь которого содержит DLL и имя процесса, совпадающее с именем вашего файла EXE, чтобы увидеть, какие файлы DLL загружаются. или попытался загрузить и найти последнюю NAME NOT FOUND цепочку , а не , заканчивающуюся SUCCESS.
...