我在虚拟机上安装了XP,将其更新到SP3,然后在我的真实计算机上测试了一个用Visual C ++ 2008编译的小程序 - 但它没有启动但只输出一个错误,表示已检测到问题并且重新安装应用程序(我的大小为10KB,甚至没有安装)可以解决问题。
答案 0 :(得分:4)
要么在空间上链接到运行时库(选择multithreaded
而不是multithreaded-dll
),要么按照tommieb75的建议安装MSVC9 runtime redistributable(复制到system32或应用程序的文件夹也可以,但不是要走的路,afaik)。对于不需要安装程序的小型应用程序,我更喜欢第一个选项。部署运行时安装程序烦人。
答案 1 :(得分:2)
您可能错过了MCVC9运行时库,请尝试将其复制到Windows System32文件夹...
答案 2 :(得分:0)
它可能取决于项目链接的DLL。检查程序集清单并检查VM上是否安装了这些DLL。
答案 3 :(得分:0)
您的计划包含哪些内容?对dynamic C/C++ runtime的依赖?然后,您需要在应用程序中包含C ++可再发行的运行时DLL,或者更改程序以使用静态C ++运行时。同样,你使用ATL吗? MFC?自定义第三方库?它们都会为您的可执行文件添加依赖项,Win32将拒绝加载您的应用程序。
一个简单的步骤是使用Dependency Walker检查您的应用程序具有哪些依赖项。
答案 4 :(得分:0)
它可能是您应用程序链接的DLL。 depends工具是每个程序员工具箱中必须具有的,用于调试DLL依赖性问题。
如果你有商业版而不是快递版msvc,那么你真正应该做的是将msvcmon redist组件复制到你的VM,在那里运行远程调试监视器,并从桌面开发环境连接到它。 This page解释了基本原理。因为听起来你的应用程序在XP上引起了异常。
如果您无法进行远程调试,并且依赖性检查程序未指示dll问题,那么您可以查看系统应用程序事件日志以查看是否还有其他信息。或者尝试将Dr Watson安装为事后调试器。打开命令提示符并输入
drwtsn32 -i
将Dr Watson安装为事后调试器,并
drwtsn32
获取配置屏幕,允许您浏览崩溃转储的位置。您可以使用Dev Studio 2005及更高版本直接加载故障转储文件。 (我认为Watson博士不再使用Vista和Windows 7了。)