你好我按照系统工作。
windows 7 ultimate sp1 x64。
visual studio 9 c ++ sp1。
directx sdk 9(我不知道我的指定版本。但它的版本高于2010年6月)。
提升x86 1.47
我的视觉工作室不是英文版,所以我不能简单地写下菜单或信息的名字。但它的含义几乎相同。
我的项目是3D游戏。
我使用visual studio的'安装项目'制作项目的安装程序
并包括每个包含的项目的依赖DLL(使用visual studio的功能)
一切都好。安装和运行测试成功。并且每个dll都安装好了。 (ex d3d9.dll)
当我在纯Windows xp sp3上测试它时,安装(setup.exe)成功。但是当我运行这个程序时,它会出错并且不会执行。
错误对话框是:
无法在动态链接库msvcrt.dll中找到过程条目point_except_handler4_common。
(我的Windows XP不是英文,但几乎是正确的)
我接下来试了一下:
安装程序项目 - &gt; “属性” - &gt; “先决条件..” - &GT; “选择要安装的先决条件:” - &gt;添加检查到 - &gt;“Visual C ++ 2010运行时库(x86)和.Net Framework 3.5 sp1 - &gt;”指定先决条件的安装位置“ - &gt;”从组件供应商的网站下载先决条件“< / p>
输出是
installerproject.msi
选择vcredist_x64.exe
SETUP.EXE
我尝试重新安装vcredist_x86并重新启动。客户端计算机(纯Windows xp3)也有同样的问题。谷歌说“msvcrt.dll引发了很多问题。”但没有文章在我找到的列表中解决我的问题。 - 他们说'没有一般解决方案:(
谁知道这个问题的解决方案?为什么会出现这个问题?
请帮帮我。对不起我最短的英语。这是我最好的英语技能
答案 0 :(得分:1)
您可能希望将程序加载到XP计算机上的Dependency Walker,以查看二进制文件尝试链接到msvcrt!_except_handler4_common。
msvcrt.dll
是一个系统DLL,不是Visual C ++ 2008(或者2010年 - 您不清楚使用哪个)运行时库的一部分。 VC ++ 2008的运行时DLL名为msvcr90.dll
,因此我猜测对msvcrt.dll存在一些间接依赖。您需要确定哪些二进制文件试图使用msvcrt.dll
导出的二进制文件,并确定它是否与WinXP兼容,或者如何使其兼容。
请注意,由于msvcrt.dll
是系统DLL,因此它属于Windows的系统文件保护功能,因此除了服务包和系统更新外,通常无法更新/修改它。
仅供比较:
msvcrt.dll
版本7.0.2600.5512 - 它没有_except_handler4_common
入口点。msvcrt.dll
版本7.0.7600.16385,它确实有这个入口点。