我正在使用“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 XP 的版本带有旧版本的 DLL(相关的知识库文章说确实如此),或者是第三方应用程序破坏了导致问题的 DLL。这里需要更多的研究。
关于visual-studio - 无法在动态链接库 msvcrt.dll 中找到过程入口点 _except_handler4_common,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750110/