Visual Studio 2008支持Windows 98吗?

17

我们正在考虑将 Visual Studio 2005 升级到 Visual Studio 2008。我发现了以下令人不安的评论。

来自 更新 WINVER 和 _WIN32_WINNT:

从 Visual C++ 2008 开始,Visual C++ 不再支持针对 Windows 95、Windows 98、Windows ME 或 Windows NT 的目标平台。

这是否意味着,如果我们使用 Microsoft Visual C++ 2008 重新构建产品,它们将停止在 Windows 98 计算机上运行?听起来是这样的,但我很难相信他们会做出如此大的改变。


4
当他们说他们不“支持”它时,这会让人感到困惑。有时它会起作用,他们只是不想帮助你解决问题。有时候,它肯定不会起作用。我希望他们能区分“自行承担风险的操作”和“不能这么做”的区别。 - DOK
8个回答

15

3
你应该不仅仅是假设。在 Windows 和低于版本 5 的 Windows NT 上,VS9 生成的二进制文件将无法被物理加载。 - Chris Becke
1
你不应该假设我有任何假设。在链接步骤中,您可以玩弄PE文件头标志,以使9x PE加载器正确解析VS9输出。然后只需要解决DLL导入问题。但是从“加载”到“正常工作”存在很大差距,这就是为什么我使用“偶尔”的原因。 - Mihai Limbășan

3
是的,这确实意味着:在Windows NT之前的Windows 2000以及所有的Windows(9598ME)上,Windows CreateProcess和LoadLibrary API将无法加载由Visual Studio 2008(VS 9)生成的DLL或EXE文件,因为文件中的PE header必须设置为5个所需的操作系统版本字段。
尝试加载Visual Studio 2008生成的EXE文件时出现的错误消息将(是一个非常不友好的模态错误对话框),实际上会显示“您需要升级您的操作系统才能运行此程序”。

我试图将字段编辑为4。二进制文件将被加载,但任何使用Visual Studio 2008 C-runtime的操作都会挂起或崩溃。有一些方法可以让Visual Studio 2008项目不使用其本机C-runtimes,但如果对C++特性的大量使用对你很重要,这种方法在小型应用程序之外就无法扩展。

Visual Studio 2005 (VS 8) 具有大部分Visual Studio 2008的功能,但仍然针对早期操作系统版本,这就是为什么在我们公司目前还坚持使用它的原因。


1

他们不支持旧版本的操作系统在新产品上是很自然的。这将会花费更多代价(不仅仅是金钱成本,而且还会使一些新的有用功能变得更难或不可能实现),因为旧系统存在着限制(并且经常会有 Bug)。这种情况经常发生,并且适用于每个人;新版本的 GCC 停止支持较旧的、不那么流行的架构,而新版本的 glibc 需要更高版本的内核。

这些操作系统已经被淘汰了;从微软的角度来看,已经没有人再使用它们了。如果你仍想为它们开发,你可以使用相同年代的旧工具。


0
根据.NET 3.5信息,Windows 98不受.NET 3.5支持,所以我想这就是他们的意思。你仍然可以进行.NET 2.0和更低版本的开发,但如果你使用3.5库,Windows 98就不被支持了。

0

目前,3.5框架甚至无法在Windows 2000服务器上安装。因此,我不认为它们会在95、98或NT上安装。微软不再希望承担支持这些已退役操作系统的责任。


1
请不要使用"M$"这样的术语。这不适合本社区。 - Rob
抱歉,我最初从事支持工作,最近转向开发。我想有些旧习惯仍然会流露出来。感谢您的编辑! - JFV

0
我建议您将此视为停止支持Windows 9x的一个机会。这是任何理由都可以这样做的好机会。而且,至少如果您正在为Win32 API编写C/C++代码,如果您可以假定目标操作系统是Windows 2000或更高版本,则生活会轻松得多

0

虽然我同意JesperE的观点,但Windows 98用户所占比例非常小,因此除非你知道大部分客户实际上正在使用Windows 98,否则没有必要针对他们进行目标定位。

无论如何,在Visual Studio 2008中确实可以针对Windows 98进行目标定位(不能在Windows 98上进行开发)。但是,您必须仅将项目定位于.NET 2.0,不能使用任何3.0或3.5功能。


0

据我理解,最新的KernelEx可以使所有针对XP的MSVC版本潜在地工作(结果取决于您决定使用多少“最新”的函数/特性)

关于2008年可能的答案,那时已经有相当数量的修补库了(如果它们已经失效,请在Wayback Machine上检查链接)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接