![由于 ucrtbase.dll 导致应用程序崩溃](https://linux22.com/image/1580389/%E7%94%B1%E4%BA%8E%20ucrtbase.dll%20%E5%AF%BC%E8%87%B4%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%B4%A9%E6%BA%83.png)
我们目前正在升级我们的应用程序。Win7->Win10,VS2012->VS2017。解决方案的复杂性相当高,但除了一个项目(流程)外,一切都进展顺利。
该进程终止,在事件日志中我找到了以下内容:
Faulting application name: MyProcess.exe, version: 1.0.0.0, time stamp: 0x5c418d86
Faulting module name: ucrtbase.dll, version: 10.0.10240.16384, time stamp: 0x559f3aa5
Exception code: 0xc0000409
Fault offset: 0x0007d84b
Faulting process id: 0xcdc
Faulting application start time: 0x01d4b19831ce98cd
Faulting application path: C:\PathToMyProcess\MyProcess.exe
Faulting module path: C:\Windows\SYSTEM32\ucrtbase.dll
Report Id: 3071cc19-1a57-4828-9721-275a2d3cf164
Faulting package full name:
Faulting package-relative application ID:
我得出的结论是,它可以在安装了 Visual Studio 2017 的计算机上运行,但不能在没有安装 Visual Studio 2017 的计算机上运行。我安装了 .NET 桌面开发、使用 C++ 的桌面开发。必须包含单个组件:适用于 x86 和 x64 的 Visual c++ MFC 以及 Windows 10 SDK 10.0.17134。看图片。
我安装了各种版本的可再发行版本以及我能找到的任何版本,但仍然无法正常工作。我遗漏了什么?Windows 和 Microsoft Visual C++ Redistributable for Visual Studio 2017 中默认未包含什么?
答案1
我已经安装了各种版本的可再发行版本以及我能找到的任何东西,但它仍然不起作用。
ucrtbase.dll
与 Visual C++ Redistributable 的任何版本都无关。出错的文件来自Windows 10 SDK(26624)。
我得出的结论是,它在安装了 visual studio 2017 的计算机上可以工作,但在没有安装的计算机上则不行
Visual Studio 2017 根据您选择安装的组件,将安装正确版本的 Windows SDK。
Windows 和 Microsoft Visual C++ Redistributable for Visual Studio 2017 中默认不包含什么?
如果您选择需要 Windows SDK 的组件,Visual Studio 2017 将安装 Windows SDK。如果您未选择安装任何需要 Windows SDK 的组件,Visual Studio 2017 将不会安装 Windows SDK。
我错过了什么?
如果您是该程序的作者,我会首先更新您的解决方案以指向正确的版本ucrtbase.dll
,然后在系统上安装通用 C 运行时。如果您不是作者,那么我会安装Windows 10 SDK(26624),以解决故障模块。
当你安装正确版本的 SDK 时,一定要安装Universal C Runtime
,因为这实际上是安装ucrtbase.dll
答案2
我也遇到过这个问题:我为不同的项目(exe/lib/dll)混合了平台工具集,并且具有不同的工具集;我通过对所有项目使用相同的工具集解决了这个问题。
答案3
我曾两次遇到此问题,其中一次我能够解决,但另一次我却找到了“问题区域”。这个 ucrtbase.dll 错误只是一个一般错误。那么我到底出了什么问题?
第一种情况:应用程序 -> cpp.dll -> 静态链接到的 cpp 接口 -> C#.dll -> 遇到错误。错误被检测到并捕获,在 C# 中向上抛出,甚至随后影响到 C-interop 到 C++。这不起作用,一切都崩溃了。
第二种情况:目前尚未解决,但在尝试使用 _COM_SMARTPTR_TYPEDEF 时莫名其妙地崩溃了,该错误以前在 Win7 中可以运行,但在 Win10 中却不行。
编辑:第二个案例已解决;在与其他进程通信时,com 构造函数内部深处由于 com 接口的代理/存根错误而失败。基本上是沟通不畅。