当它应该在旧版本的Windows上运行时,exe无法运行

问题描述:

我有一个Win32 C++应用程序,我在运行Windows 7的PC上编译了Microsoft Visual Studio C++ express 2010.该应用程序在发布模式下用\ MT运行时间标志(多线程)。当它应该在旧版本的Windows上运行时,exe无法运行

我的问题:当我尝试在运行Windows Vista的笔记本电脑上运行我的.exe时,应用程序崩溃,从不打开主窗口。我使用的.exe是visual studio项目的'release'文件夹的输出。

我已经检查了应用程序中的大部分win32函数,它们都在windows 2000及更高版本上运行。我还将Visual Studio项目移到了Windows Vista笔记本电脑上并进行了编译,运行良好并且工作正常。

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

+3

您是否使用http://www.dependencywalker.com/检查了依赖关系? – Andre 2012-04-09 06:58:27

+4

什么是错误信息?始终包含该细节。 “它崩溃”是远远不够的。 – 2012-04-09 07:52:03

这听起来像你需要VS2010 runtime re-distributable包。请注意,该链接适用于VS2010 SP1,如果您未使用SP1进行编译,则可能需要不带SP1的VS2010。

+0

不是,“用/ MT编译”。 – 2012-04-09 07:30:10

+1

但是“编译时使用/ MT”和“175kb”的可执行文件大小会引起一些怀疑。 – 2012-04-09 07:49:12

+0

@HansPassant,最近发布了一个用/ MT和静态链接库编译的VS2010 MFC C++应用程序,我发现我仍然需要运行redist才能在除Windows 7之外的其他任何程序上正确执行。我猜VC库依赖于其他更新的更新操作系统组件版本,可以在更改后进行更新。纯粹的猜测介意你;) – 2012-04-09 08:50:07