visual-studio - 无法在动态链接库 msvcrt.dll 中找到过程入口点 _except_handler4_common

标签 visual-studio mfc windows-xp installshield

我正在使用“Microsoft Visual Studio”来处理“MFC 应用程序”。

我正在使用“Installshield”为此应用程序创建安装文件。

我得到一个“setup.exe”文件。

如果我在“Windows XP 32 位”机器上运行此设置,安装将正确结束。

然而,当我尝试启动已安装的程序时,我收到以下消息:

"The procedure entry point _except_handler4_common could not be located in the dynamic link library msvcrt.dll."

在 Debug模式下,我找不到错误发生的那一刻,因为无论我在代码中放置什么断点,消息都会在到达断点之前出现,我猜是在程序执行的一开始......

注意:它适用于 Vista 32 位和 7 个 64 位。

似乎很多人确实有同样的问题,但我无法为自己找到解决方案。

你能帮我吗?
谢谢你。

最佳答案

欢迎来到 DLL hell 和应用程序依赖分析的世界。

我在我的 Win8 机器上的 SYSWOW64(32 位 System32 文件夹)中找到了版本 7.0.9200.16384 的 DLL。使用 Dependency Walker 查看它我可以看到它实际上导出了您正在寻找的功能。

我还在我的 InstallShield 机器上看到了一个名为 MSVCRT.MSM 的合并模块,它重新分发了此文件的 6.00.8797.0 版本。但是,当我使用 Dependency Walker 查看它时,我发现它具有导出的函数 _except_handler2 和 _except_handler_3,但没有 _except_handler_4_common。

因此,您需要一个更新的 DLL,而该合并模块对您没有帮助。微软曾经有一个很酷的网站,叫做 DLL 帮助数据库,它告诉你一个文件的所有版本以及发布它们的内容,但遗憾的是他们杀死了它。

顺便说一句,我也可以看到这些天这个 DLL 是随 Windows 一起安装的。 window XP?我不太确定,因为我必须启动虚拟机并查看。

几个可能的解决方案:

  • 找出 Windows 的 SP 或 Hotfix 解决了这个问题,并使其成为您的 MSI 的依赖项。
  • 从 Win 8 机器中获取 DLL 并将其添加到您的 INSTALLDIR 并私下部署它。

  • 最后一点。这可能是由于 Windows XP 的版本带有旧版本的 DLL(相关的知识库文章说确实如此),或者是第三方应用程序破坏了导致问题的 DLL。这里需要更多的研究。

    关于visual-studio - 无法在动态链接库 msvcrt.dll 中找到过程入口点 _except_handler4_common,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750110/

    相关文章:

    c++ - Visual Studio C++ - 像在 Eclipse 中一样在鼠标悬停时显示函数代码

    visual-c++ - 仅在需要时才在 MFC 应用程序中请求管理员权限

    visual-c++ - CScrollView 偏移客户端矩形与滚动位置

    c++ - 无法使用 CreateProcess 重定向标准输出

    security - 如何以编程方式创建只读网络共享?

    windows - 从远程桌面 session 注销不会关闭 session ,在 Windows XP 32 位 - SP2 上再次显示登录屏幕

    c# - 如何在 Visual Studio 中使用 C# 中其他文件的类?

    c# - 无效操作异常 : Cannot use table 'xxxx1' for entity type 'xxxx2' since it is being used for entity type 'xxxx1'

    asp.net - 无法访问 IIS 元数据库

    windows-xp - Windows SideBySide 如何工作?有任何文档吗?