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

Léa*_*iot 4 mfc installshield windows-xp visual-studio

我正在使用"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."
Run Code Online (Sandbox Code Playgroud)

在调试模式下,我无法找到错误发生的那一刻,因为无论我在代码中放置什么断点,消息在到达断点之前出现,我想在程序执行的最开始......

注意:它适用于Vista 32位和Seven 64位.

看来很多人都有同样的问题,但我找不到自己的解决方案.

你能帮我吗?谢谢.

Chr*_*ter 5

欢迎来到DLL地狱世界和应用程序依赖性分析.

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

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

因此,您需要一个较新的DLL,该合并模块将无法帮助您.微软曾经拥有这个名为DLL帮助数据库的酷网站,该网站告诉你文件的所有版本以及发送给他们的东西,但遗憾的是他们将其杀死了.

顺便说一句,我还可以看到这个DLL现在安装了这个DLL.Windows XP?我不太确定,因为我必须启动VM并查看.

几种可能的解决方案:

  1. 找出Windows的SP或修补程序修复此问题并使其成为您的MSI的依赖项.

  2. 从Win 8计算机中获取DLL并将其添加到您的INSTALLDIR并私下部署它.

最后一点说明.这可能是由于Windows XP版本附带旧版本的DLL(相关知识库文章说它确实存在)或第三方应用程序破坏了导致问题的DLL.这里需要进行更多的研究.


Mic*_*man 0

您的程序具有 Windows XP 上未满足的依赖性。您可以尝试使用 Dependency Walker 来识别它,或者您可以检查已知的限制。例如,Visual Studio 2012 在更新 1 和构建选项更改之前不支持 Windows XP - 这是您正在使用的吗?