【问题标题】:Exe doesn't work on older versions of Windows when it should当它应该在旧版本的 Windows 上运行时,Exe 不起作用
【发布时间】:2012-04-21 15:12:07
【问题描述】:

我有一个 Win32 C++ 应用程序,我在运行 Windows 7 的 PC 上使用 Microsoft Visual Studio C++ express 2010 编译。该应用程序在发布模式下编译,带有 \MT 运行时标志(多线程)。

我的问题:当我尝试在运行 Windows Vista 的笔记本电脑上运行我的 .exe 时,应用程序崩溃并且永远不会打开主窗口。我使用的 .exe 是 Visual Studio 项目的“发布”文件夹的输出。

我已经检查了应用程序中的大多数 win32 功能,它们都可以在 Windows 2000 及更高版本上运行。我还将 Visual Studio 项目移到 Windows Vista 笔记本电脑上并对其进行了编译,它运行良好。

为什么 .exe 会崩溃?这是否意味着我可以让我的 .exe 在不同版本的 Windows 操作系统上工作的唯一方法是使用安装程序? .exe 的大小只有 175kb,所以安装程序可能会比输出的 .exe 大,哈哈?

【问题讨论】:

  • 你检查过dependencywalker.com的依赖关系吗?
  • 错误信息是什么?始终包括该细节。 “它崩溃了”是永远不够的。

标签: c++ c windows winapi


【解决方案1】:

听起来你需要VS2010 runtime re-distributable 包。注意这个链接是针对 VS2010 SP1 的,如果你没有用 SP1 编译,你可能需要没有 SP1 的 VS2010。

【讨论】:

  • 但是“用 /MT 编译”和“175kb”可执行文件大小引起了一些怀疑。
  • @HansPassant,最近发布了一个用 /MT 和静态链接库编译的 VS2010 MFC C++ 应用程序,我发现我仍然需要运行 redist 才能在 Windows 7 以外的任何设备上正确执行。我是猜测 VC 库依赖于其他更新的操作系统组件版本,这些版本在 redist 中得到更新。纯猜测请注意;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
  • 2018-10-28
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多