1

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

我们发现在干净的 windows xp sp3 机器上,双击可执行文件并没有启动,并抛出一个错误,提示“配置不正确”。我们通过在系统上安装 VS2008 可再发行包解决了这个问题。我的问题是:

1- 为什么会这样?它并没有发生在所有 xp 机器上,但其中一些机器上发生了。令人难以置信的是,在 windows xp sp3 中默认情况下不存在运行简单 win32 程序所需的文件。那么notepad.exe和其他程序在哪里运行呢?我考虑的一种可能性可能是操作系统中存在的运行时文件较旧,而 exe 清单指的是较新版本的文件。但我想知道是否是这种情况,因为 VS 2008 本身已经很老了。让我知道你的想法。

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

谢谢。

4

2 回答 2

3
  1. 发生这种情况是因为 VS2008 可再发行组件未随 Windows 一起安装。它们必须由另一个应用程序安装,这意味着它们不会出现在原始 Windows 安装中。但它们很可能出现在安装了一些应用程序的机器上,因为许多 Windows 应用程序都使用它们。本机 Windows 应用程序(例如记事本)不依赖于它们,因此记事本在没有它们的情况下运行也就不足为奇了。

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

正如您现在所发现的,在原始 Windows 安装上以发布模式测试应用程序是测试任何 Windows 应用程序的关键步骤。

于 2013-06-04T18:16:01.013 回答
2

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

另一种方法是将 redist 安装程序与您的安装程序打包在一起。

于 2013-06-04T17:01:42.760 回答