关于如何修复 Visual Studio 2019 中的 Dll 初始化错误有什么想法吗?

blu*_*ot2 3 c++ dll console-application visual-studio-2019

编码新手,当我正在开发 C++ 控制台应用程序时,突然我无法打开应用程序进行调试。它只是弹出并显示“应用程序无法正确启动(0xc0000142)”。Visual Studio 上也没有错误/警告代码。花了最后一个小时尝试了我在论坛等上读到的各种不同的解决方案。完全更新的Windows,更新的nvidia驱动程序,更改注册表中的值,检查防火墙等。我唯一能想到的就是运行sfc,并且可能必须重新安装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'.
Run Code Online (Sandbox Code Playgroud)

它显示我的应用程序成功加载 kernal32.dll 和 KernalBase.dll,但 ntdll.dll 正在加载但未显示其已卸载。但不完全确定这是否相关。任何帮助深表感谢!

Che*_*yDT 5

错误0xC0000142可能是STATUS_DLL_INIT_FAILED由于缺少依赖项 DLL 或依赖项中缺少函数导出(例如,由于意外的 DLL 版本未导出预期函数)。

  • 尝试查看事件日志 ( eventvwr.exe) 中是否有任何加载程序消息,这些消息可能会告诉您缺少或加载失败的依赖项。
  • 使用依赖关系工具分析应用程序的依赖关系链以查找任何丢失的 DLL 或导出。
  • 尝试使用GFlags.exe为您的 EXE 文件名启用“加载器快照” ,然后检查 Visual Studio 中的调试输出以获取有关哪些 DLL 加载失败的指示。
  • 尝试使用进程监视器,将过滤器设置为包含路径DLL且进程名称与 EXE 文件名匹配,以查看正在加载或尝试加载哪些 DLL 文件,并查找最后NAME NOT FOUND一个SUCCESS.