我们正在考虑从Visual Studio 2005升级到Visual Studio 2008。我发现了以下令人不安的评论。
来自 Update WINVER and _WIN32_WINNT:
从Visual C++ 2008开始,Visual C不支持以Windows 95、Windows 98、Windows ME或Windows NT为目标。
这是否意味着如果我们用Microsoft Visual C 2008重新构建我们的产品,它们将无法在Windows 98计算机上工作?听起来是这样,但我很难相信他们会做出如此大的改变。
8条答案
按热度按时间5lwkijsr1#
这不仅仅是关于.NET 3.5的。它是关于WINVER中强制版本升级所引入的Windows SDK头文件宏和定义的。所以是的,Colen,Visual C++ 2008二进制文件将只针对Windows NT API,虽然偶尔它们可能会在Windows 98上工作,您应该假设您无法使用Visual Studio 2008以Win9x为目标。您必须使用Visual Studio 2005或更早版本。
nwo49xxi2#
是的,它确实意味着:Windows 2000之前的Windows NT以及所有Windows(95、98、* 和 * ME)上的Windows CreateProcess和LoadLibrary API不会加载由Visual Studio 2008(VS 9)创建的DLL或EXE文件,因为文件中的PE header将所需的操作系统版本字段设置为5。
尝试加载Visual Studio 2008生成的EXE文件时的错误消息实际上会(是一个非常不友好的模式错误对话框)说“您需要升级操作系统才能运行此程序”。
我尝试将该字段编辑为4。二进制文件将被加载,但任何使用Visual Studio 2008 C运行时的操作都会挂起或使进程崩溃。有一些方法可以让Visual Studio 2008项目不使用其本机C运行时,但如果大量使用C++功能对您很重要,则此方法无法扩展到小型应用程序之外。
VisualStudio2005(VS8)具有VisualStudio2008的大部分特性,但它仍然针对早期的操作系统版本,这就是为什么在我的商店,我们坚持与目前。
cyvaqqii3#
他们的新产品不支持旧版本的操作系统,这是很自然的。要让旧系统的限制(通常还有bug)发挥作用,他们需要付出更大的代价(不仅仅是金钱上的代价,而且会使提供一些新的有用功能变得更加困难或不可能)。这种情况一直在发生,每个人都是如此;GCC的新版本不再支持较旧的不太流行的体系结构;glibc的新版本需要更新的最低内核版本;等等。
这些操作系统早已退役;从微软的Angular 来看,没有人应该再使用它们了。如果你还想为它们开发,你可以使用同一年份的旧工具。
whitzsjs4#
3.5框架甚至不会安装在Windows 2000 Server上。所以我不相信他们会安装在95,98或NT上。微软不想再承担支持这些退休操作系统的责任了。
tktrz96b5#
据我所知,使用最新的KernelEx,所有针对XP的MSVC版本都可能工作(结果取决于您随后决定使用多少“最新”功能/特性)
至于2008年的答案可能是什么,即使在那时也有相当多的patched libraries(检查Wayback Machine上的链接是否中断)。
gt0wga4j6#
虽然我同意JesperE的观点,但Windows 98在用户中所占的比例很小,以他们为目标没有什么意义,当然,除非您知道您的客户中有很大一部分实际上正在使用Windows 98。
在任何情况下,你都可以在Visual Studio 2008中以Windows 98为目标(你不能在Windows 98上开发),但是你必须只以.NET 2.0为目标,你不能使用任何3.0或3.5的特性。
0yg35tkg7#
我建议您将此作为停止支持Windows 9x的一个机会。这是一个很好的理由。而且,至少如果您正在为Win32 API编写C/C++代码,如果您可以假设目标操作系统是Windows 2000或更高版本,那么工作会**容易得多。
jogvjijk8#
根据 .NET 3.5 information,Windows 98不支持.NET 3.5,所以我想这就是他们的意思。你仍然可以做.NET 2.0和更低的开发,但如果你使用3.5库,Windows 98是不支持的。