基于 Win7 构建的程序无法在 WinXP 上运行
Program Built on Win7 won't run on WinXP
我有一个使用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和功能。
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- thread_local unordered_map加上 AccessibleObjectFromWindow 无法在 WinXP 中运行
- WinXP上具有C运行库libs 2011的Win32程序无效
- 如何在winxp运行时提升我的进程?
- 基于 Win7 构建的程序无法在 WinXP 上运行
- 使应用程序在使用Win7功能的WinXP/Vista上运行