我安装了Visual 2015,并使用一些代码创建了Win32项目。我成功地编译了它,但是我不能启动exe文件,因为我没有一些ucrtbased.dll...So,如何解决它?

编辑:英语对应的信息是:“程序无法启动,因为您的计算机缺少ucrtbased.dll。请尝试重新安装该程序以解决此问题。”
发布于 2017-02-01 00:43:09
此问题源于VS 2015在安装Visual期间没有将ucrtbased.dll (调试)和ucrtbase.dll (发行版)复制到适当的系统文件夹中。(或者您在安装过程中没有选择“Visual C++ 2015通用工具”。)这就是为什么重新安装可能有帮助。然而,重新安装是一个极端的措施..。这可以在不完全重新安装的情况下修复。
首先,如果您并不真正关心底层问题,只想让这个项目快速工作,那么下面是一个快速解决方案:只需将ucrtbased.dll从C:\Program Files (x86)\Windows Kits\10\bin\x86\ucrt\ucrtbased.dll (用于32位调试)复制到应用程序的\debug目录和可执行文件一起。然后它就会被找到,错误就会消失。但是,这只适用于这一个项目。
一个更持久的解决方案是将ucrtbased.dll和ucrtbase.dll放到正确的系统文件夹中。现在,我们可以开始将这些文件复制到\Windows\System32 32和\SysWOW64 64中,这可能会解决问题。然而,这并不是最好的解决方案。这从一开始就失败是有原因的,强制使用特定的..dll的这种方式可能会导致重大问题。
最好的解决方案是打开控制面板-->程序和功能--> 2015 ->修改。然后取消选中“VisualC++-> Visual C++ 2015通用工具”。单击Next,然后单击Update,几分钟后,应卸载通用工具。然后重复,但这次安装公共工具。确保杀毒是禁用的,没有其他任务是开放的,等等,它应该工作.这是确保正确复制这些文件的最佳方法。
错误代码:注意,如果安装程序返回一个神秘的错误号,如-2147023293,您可以使用任何免费的在线十进制到十六进制转换器将其转换为十六进制。对于此错误,它是0xFFFFFFF80070643,它删除FF并搜索"0x80070643",意思是‘0x80070643-安装缓存或ISO已损坏’。
为什么需要ucrtbased.dll ?:任何名为"crt“的DLL都是”C运行时“模块或库。微软对此解释得最好。。今天CRT有很多变体。它们包含所有Microsoft编译的可执行文件所使用的基本助手代码,以"shim“或帮助您的可执行文件在不断增加的操作系统版本和硬件上运行。如果使用MSVC编译器,则在编译时自动链接相关的CRT DLL .(如果在编译时找不到DLL,则会生成链接错误。)
而不是需要DLL的一种方法是“静态链接”它到您的项目。这意味着您基本上接受了ucrtbased.dll的内容,并将其包含在您的可执行文件中。您的文件大小将增加大约ucrtbased.dll的大小。
顺便说一句,如果您曾经运行过一个MSVC程序(通常是来自另一个个人,您以前操作系统版本的一个旧编译程序,或者您的程序是从另一台机器上运行的),那么它就不会启动,给出了需要"Microsoft Visual C++ 20xx可再发行版“或”运行时“的错误消息--这意味着它找不到所需的*crt*.dll文件。安装特定的可再发行包(如果已知的话)将安装DLL,并允许程序运行.或者至少克服这个错误,并提醒您另一个缺少的DLL。
如果你发现自己陷入了这种"DLL地狱“的困境,谷歌”依赖漫步者“的高级工具,以显示哪些DLL仍然缺失。这通常不会发生在专业软件中,仅仅是因为他们的(大型的,捆绑的)安装程序检查是否有任何缺少的依赖库(包括CRT)并首先安装它们。
发布于 2015-11-18 14:47:35
通过重新安装Visual 2015解决了这个问题。
发布于 2017-06-02 17:18:37
rdtsc解决方案对我不起作用。
首先,我使用VisualStudio2015Express,对于它,安装程序“修改”查询没有提出任何可以取消选中的“Visual C++ 2015通用工具”选项。
其次,即使在2次卸载/重新安装(等待它们完成.的许多小时)之后,问题仍然存在。
我最终通过从独立安装程序(独立于VisualWindows2015安装)重新安装整个Windows来修复这个问题: C++或https://developer.microsoft.com/fr-fr/windows/downloads/windows-10-sdk
这个解决了我的问题。
https://stackoverflow.com/questions/33743493
复制相似问题