无法在干净的系统中启动VS2008内置的可执行文件



我最近遇到了这个问题。我在visual studio 2008中有一个简单的基于控制台的项目,我在发布模式下构建并发布了它。

我们发现,在一个干净的windows xp sp3机器上,双击可执行文件不启动,并抛出一个错误,说"配置不正确"。我们通过在系统上安装VS2008可重新分发包来解决这个问题。我的问题是

1-为什么会发生这种情况?并不是所有的xp机器都会出现这种情况,只是其中的一部分。令人难以置信的是,运行一个简单的win32程序所需的文件在windows xp sp3中没有默认存在。那么notepad.exe和其他程序是如何运行的呢?我考虑的一种可能性是,操作系统中存在的运行时文件较旧,而exe清单引用的是较新版本的文件。但我想知道情况是否如此,因为VS 2008本身就很老了。让我知道你的想法。

2-因为我必须在很多机器上运行exe,我正在考虑一种在VS 2008中通过win32程序静态链接所有所需库的方法。我知道链接器选项中的/MT开关,但我想知道它是否会照顾所有的运行时库(c++库和其他windows库)。

谢谢。

  1. 这是因为VS2008的可分发版没有安装在Windows上。它们必须由另一个应用程序安装,这意味着它们不会出现在原始Windows安装中。但它们很可能出现在安装了一些应用程序的机器上,因为许多Windows应用程序都使用它们。本机Windows应用程序如记事本不依赖于它们,所以记事本没有它们也就不奇怪了。

  2. 正如typ1232已经指出的那样,/MT选项将解决您的问题(以增加EXE和DLL大小为代价)。本机Windows api的库是保证存在的,除非它们被特别记录为必须单独安装的选项,所以你不需要担心它们。

/MT选项将导致运行时库被静态链接,因此动态库不必出现在目标系统上。

另一种方法是将redist安装程序打包到您的安装程序中。

最新更新