以前工作的可执行文件现在在运行时出现应用程序错误

Previously working executable now gives application error at runtime

提问人:James Benson 提问时间:9/26/2023 最后编辑:James Benson 更新时间:9/27/2023 访问量:39

问:

我最近将我在 VS2017 中开发的 C++ 源代码从我的桌面(运行 Win 10)复制到我的新笔记本电脑(运行 Win 11)。

尽管代码编译和链接成功,但现在每当我尝试运行可执行文件时,我都会遇到0xc000007b错误。

编辑我的调试环境变量以指向 SysWOW64 而不是 system32 消除了查找标准 dll(msvcr100.dll 等)方面的一些问题。但是,相同的运行时错误仍然存在。

我尝试将我的解决方案移植到 VS2022,但这无济于事。更新到较新版本的 SDL 2.0 也没有任何区别。

以管理员身份运行可执行文件并不能解决问题。

我已经运行了 ProcMon,并在此处包含部分输出。部分 ProcMon 输出

Windows Visual-C++ Visual-Studio-2017 程序

评论

0赞 Retired Ninja 9/26/2023
您显示的输出中似乎没有任何错误。在多个位置搜索 dll 文件是正常的。您应该确保安装了所有必要的运行时可再发行组件,并使用像 dependencywalker.com 这样的工具来找出实际缺少的内容。除非您想破坏 Windows 安装,否则您绝不应该手动使用 SysWOW64 或 system32 来解决问题。
0赞 James Benson 9/26/2023
感谢您对 Dependency Walker 的提醒 - 我会下载它。还发现了几个可能相关的 SDL 特定线程 - 更多新闻。

答:

0赞 James Benson 9/27/2023 #1

因此,Dependency Walker透露我的项目正在调用mscvr100.dll的x64版本。目前尚不清楚这是如何发生的。简单地运行 2015-2022 VS C++ Redistributable 的修复安装并不能解决问题,所以我不得不从 dll-files.com 手动下载新版本的 dll。

我的诊断和修复几乎完全遵循下面的视频,除了我将最新版本的 msvcr100.dll 放入系统目录(SysWOW64 中的 x86 和 system32 中的 x64),而不是将任何内容放在可执行目录中。

https://youtu.be/eedlkWEo27s?feature=shared

现在,运行可执行文件时,0xc000007b错误显示的时间更长。