【问题标题】:Does Visual Studio 2008 support windows 98?Visual Studio 2008 是否支持 Windows 98?
【发布时间】:2010-09-17 20:12:14
【问题描述】:

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

http://msdn.microsoft.com/en-us/library/6sehtctf.aspx

“从 Visual C++ 2008 开始,Visual C++ 不支持面向 Windows 95、Windows 98、Windows ME 或 Windows NT。”

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

感谢您的帮助。

【问题讨论】:

  • 当他们说他们不“支持”它时,这很令人困惑。有时它会起作用,如果您遇到问题,他们只是不想帮助您。有时,它肯定行不通。我希望他们能区分“这样做需要你自担风险”和“你不能这样做”。

标签: visual-studio visual-studio-2008 visual-c++ windows-98


【解决方案1】:

不仅仅是 .NET 3.5。它是关于由 WINVER 中的强制版本碰撞引入的 Windows SDK 头文件宏和定义。所以是的,Colen,Visual C++ 2008 二进制文件将只针对 Windows NT API,虽然它们有时可能在 98 上工作,但您应该假设您不能使用 Visual Studio 2008 来针对 Win9x。您必须使用 VS2005 或更早版本。

【讨论】:

  • 你应该做的不仅仅是假设。 VS9 生成的二进制文件实际上不会在低于 5 的 Windows 和 Windows NT 版本上加载。
  • 你不应该假设我假设。您可以在链接器步骤中使用 PE 文件头标志来让 9x PE 加载器正确解析 VS9 输出。那么这只是解决 DLL 导入的问题。但是从“负载”到“正常工作”有很大的差距,这就是我“偶尔”使用的原因。
【解决方案2】:

是的,这确实意味着:2000 年之前的 Windows NT 和所有 Windows(95,98 AND ME)上的 Windows CreateProcess 和 LoadLibrary API 不会加载由 VS9 生成的 DLL 或 EXE 文件,因为文件中的 PE 头有所需的操作系统版本字段设置为 5。

尝试加载 VS9 生成的 exe 文件时的错误消息(是一个非常不友好的模式错误对话框)实际上是说“您需要升级操作系统才能运行此程序”。

我尝试将字段编辑为 4 - 将加载二进制文件,但任何使用 VS9 c-runtime 都会挂起或使进程崩溃。有一些方法可以让 VS9 项目不使用它们的原生 c 运行时,但如果大量使用 c++ 功能对您很重要,那么这种方法不会扩展到小型应用程序。

VS8 / VS2005 具有 VS9 的大部分功能,但仍然针对早期的操作系统版本,这就是为什么在我的商店我们暂时坚持使用它的原因。

【讨论】:

    【解决方案3】:

    他们的新产品不支持旧版本的操作系统是很自然的。这将花费他们更多(不仅是金钱成本,而且使提供一些更新的有用功能变得更加困难或不可能)以使事情在旧系统的限制(通常是错误)下工作。这种情况一直在发生,而且发生在每个人身上;新版本的 gcc 放弃了对较旧的不太流行的架构的支持; glibc 的新版本需要更新的最低内核版本;等等。

    这些操作系统早已退役;从微软的角度来看,没有人应该再使用它们了。如果您仍想为他们开发,您可以使用相同年份的旧工具。

    【讨论】:

      【解决方案4】:

      根据以下链接,.NET 3.5 不支持 windows 98,所以我想这就是他们的意思。您仍然可以进行 .NET 2.0 及更低版本的开发,但如果您使用 3.5 库,则不支持 Windows 98。

      .NET 3.5 information

      【讨论】:

        【解决方案5】:

        此时 3.5 Framework 甚至不会安装在 Windows 2000 Server 上。所以我不相信他们会在 95、98 或 NT 上。 Microsoft 不想再承担支持这些退役操作系统的责任。

        【讨论】:

        • 请不要使用“M$”之类的术语。这不适合这个社区。​​span>
        • 抱歉,我从支持方面开始,最近转向开发。我想一些旧习惯仍然存在。感谢您的编辑!
        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          虽然我同意 JesperE 的观点,但 Windows 98 的用户比例太小,因此定位他们毫无意义,除非您当然知道大部分客户实际上都在使用 Windows98。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-17
            • 1970-01-01
            • 1970-01-01
            • 2014-01-24
            • 2015-01-16
            • 1970-01-01
            • 2012-08-27
            相关资源
            最近更新 更多