基于 Win7 构建的程序无法在 WinXP 上运行

Program Built on Win7 won't run on WinXP

本文关键字:WinXP 运行 Win7 构建 程序 基于      更新时间:2023-10-16

我有一个使用Visual Studio 2005在Windows 7(32位)上构建的项目。这个程序构建得很好,我可以把它移到另一台Windows7机器上运行得很好。当我试图将它移到Windows XP Pro机器上时,问题就来了。当我尝试运行该文件时,我得到以下错误:

"由于应用程序配置不正确,此应用程序无法启动。重新安装应用程序可能会解决此问题。"

当我打开事件查看器时,有三个系统错误与此问题有关:

  • 依赖程序集Microsoft。找不到VC80.CRT,上一个错误为系统上未安装引用的程序集
  • 解析Microsoft的部分程序集失败。VC80.CRT。引用错误消息:系统上未安装引用的程序集
  • 为[path to my exe]生成激活上下文失败。引用错误消息:操作已成功完成

我尝试过安装Visual C++2005 SP1 Redistributable Package,但没有帮助。

如果我在XP计算机上构建项目,我可以在另一台XP计算机(没有C++可再发行版)和Windows7计算机上运行它。

总是在XP上构建并不是一个可行的选择,因为我不是唯一一个会构建XP的人,其他人都会使用Win7。

如果是本机二进制文件,请使用Dependency Walker检查丢失的系统DLL-http://www.dependencywalker.com/

还要检查您是否需要WINVER-http://msdn.microsoft.com/en-us/library/aa383745%28v=vs.85%29.aspx否则,SDK将返回到SDK版本,对于较新版本,它是Vista+。因此,您可能会意外地调用一些XP上甚至不可用的函数。

这就是最终解决问题的原因:

将以下文件夹:"C:Program FilesMicrosoft Visual Studio 8VCredistx86Microsoft.VC80.CRT"(因为这是事件查看器中提到的文件)复制到与我执行时遇到问题的.exe相同的目录中。这使得程序可以使用它所针对的依赖项。

在将Visual Studio版本更新到Visual Studio 2005 SP1后,我们遇到了类似的问题。它附带了MFC和CRT的更新版本。

您可以使用Dependency Walker检测问题(http://www.dependencywalker.com/)。

如果出现这种情况,请尝试确保应用了windows更新。您还可以下载并运行Visual Studio 2005 SP1可再发行版。

Visual Studio 2005可再发行版http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14431

Visual Studio 2005 SP1可重新发行http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5638

Vivian De Smedt。

程序集是。NET,而不是本机代码。您可能错过了。NET框架。Visual C++Redistributable将不包括。NET程序集。

在较新的操作系统或库版本上构建的软件可能依赖于旧版本的操作系统和库中不存在的新API或功能。

您可以:

  • 在您打算支持的最旧系统上构建您的软件。这假定系统的较新版本保留了与基本版本的向后兼容性。您的软件将无法利用较新版本的操作系统中提供的功能,但应该能够在未来提供的所有向后兼容系统上运行。

  • 为您打算部署的每个系统构建一次软件。这是更多的工作,但意味着您可以配置软件,以利用平台的各种版本迭代中提供的新API和功能。