Win98早已被MS抛弃,不过至少VC2005编译的程序仍然可以在98下运行。但是如今, 随着2008的发布,Win98终于完全被无视,悼念一下。
VC2005的时候,虽然官方没有提供对Win98的正式支持,但是ANSI方式编译的程序仍然可以正常运行。对于使用Unicode方式编译的程序,相对而言麻烦一些。因为Win98本身对Unicode的支持很差,所以要借助Microsoft Unicode Layer提供的API。
你需要一些额外的工作确保unicows中的API被首先链接,同样对于MFC中通过LoadLibrary+GetProcAddress动态加载的Unicode API,你也需要将它们改成从unicows.dll加载。
How to build the 8.0 MFC and the CRT DLLs with MSLU
记得2005刚发布时,我为了这个问题还专门在MSDN Forum上提问,其间得到了Ted的大力帮助,并且成功将2005Unicode方式编译的程序移植到了Win98,想来颇有一番感慨。
Re: Visual Studio 2005 MFC Applications on Windows 98
现如今,VC2008生成的EXE会直接在PE的header中指定OSMajorVersion为5。换言之,它强制规定了程序只能在Win2000及以上的系统运行。虽然我们可以人肉把这个限制去掉,但是因为CRT和MFC库在设计的时候不再考虑对Win98的向下兼容性,用到了一些Win2000以上才有的API(诸如GetFileSizeEx),想在Win98上运行这样的程序就很困难了。
VC2005的时候,虽然官方没有提供对Win98的正式支持,但是ANSI方式编译的程序仍然可以正常运行。对于使用Unicode方式编译的程序,相对而言麻烦一些。因为Win98本身对Unicode的支持很差,所以要借助Microsoft Unicode Layer提供的API。
你需要一些额外的工作确保unicows中的API被首先链接,同样对于MFC中通过LoadLibrary+GetProcAddress动态加载的Unicode API,你也需要将它们改成从unicows.dll加载。
How to build the 8.0 MFC and the CRT DLLs with MSLU
记得2005刚发布时,我为了这个问题还专门在MSDN Forum上提问,其间得到了Ted的大力帮助,并且成功将2005Unicode方式编译的程序移植到了Win98,想来颇有一番感慨。
Re: Visual Studio 2005 MFC Applications on Windows 98
现如今,VC2008生成的EXE会直接在PE的header中指定OSMajorVersion为5。换言之,它强制规定了程序只能在Win2000及以上的系统运行。虽然我们可以人肉把这个限制去掉,但是因为CRT和MFC库在设计的时候不再考虑对Win98的向下兼容性,用到了一些Win2000以上才有的API(诸如GetFileSizeEx),想在Win98上运行这样的程序就很困难了。