gpt4 book ai didi

c++ - 我可以在 Windows 98 上运行在 Visual Studio 2005 中编译的应用程序吗?

转载 作者:可可西里 更新时间:2023-11-01 18:26:50 29 4
gpt4 key购买 nike

我在 Microsoft Visual Studio 2005 中构建了一个程序,它运行良好。

我遇到的问题是需要使用它的机器运行的是 Windows 98。据我所知,我需要安装 vc++ 的可再分发程序。我可以在 Windows 98 上安装可重新分发的程序,还是有办法让它在 Windows 98 上运行?

最佳答案

是的,使用 VS 2005 编译的应用程序在 Windows 98 和 Me 上运行得非常好。我自己运行了其中的几个,并为此目的保留并安装了 VS 2005。 Version 2005 of the CRT redistributable最早支持 Windows 98。

诀窍在于您必须针对多字节字符集 (MBCS) 编译应用程序。当编译为 Unicode 时它将不起作用,这是默认的项目设置。如果没有一些额外的帮助,Windows 9x 平台不支持 Unicode。您应该能够更改项目设置并且没问题,但如果您编写的代码采用 Unicode,那么您就会遇到问题。

这就是为什么您需要使用 tchar.h 中定义的通用字符类型和函数,而不是 Unicode 构建首选的宽字符等效项。始终使用 TCHAR 类型(或 LPTSTRLPCTSTR 类型)定义字符串,它有条件地定义为 wchar_tchar,视情况而定。使用以 _tcs... 开头的字符串操作函数,而不是那些特定于宽字符或窄字符的函数。确保当你调用函数时,你总是调用通用的 typedef'ed 版本,而不是以 AW 结尾的 ANSI 或 wide-specific 版本后缀。

如果您从一开始就没有这样做,那么回过头来解决这个问题可能需要做很多工作。如果是这种情况,您可能会查看 Microsoft Layer for Unicode on Windows 95/98/ME Systems ,它提供了一个抽象层,允许您在原生不支持的旧版 Windows 9x 操作系统上调用 Unicode 函数。

除了 Unicode/MBCS 之外,唯一需要注意的是您没有调用 Win32 API 中不存在于 Windows 98 时代的任何函数。您不能再相信在线 MSDN 文档告诉您的“最低支持客户端版本”,因为 Microsoft 不再支持 Windows 98。所有 SDK 文档都说最低支持版本是现在是 Windows 2000,您知道那是不正确的。整个 API 并没有像 W2K 那样被引入。为了获得准确的信息,您需要获取旧版本的 SDK 文档;你安装的 VS 2005 应该没问题。那里的信息至少可以追溯到 Win 98,如果不是 95(我记不太清了)。

如果您想调用 Windows 98 中不存在的函数,而当您在较新的系统上运行时它们可用,您需要格外小心调用它们动态,而不是将它们添加到应用程序的 DLL 导入表中(链接器通常会自动为您执行此操作)。这意味着自己定义函数指针,并使用 LoadLibraryGetProcAddress调用它们的函数。这并不好玩,但它确实有用。

或者,您可以将链接器配置为“延迟加载”库(检查项目的属性)。这要方便得多,但显然您需要确保调用目标操作系统上可用的函数,否则应用程序会崩溃。

无论哪种方式,GetVersionEx function将告诉您有关当前主机操作系统的所有信息,以便您的代码可以根据环境采用不同的路径(如果可用则调用较新的函数,如果不可用则回退到旧函数)。这允许您在新系统上支持新功能,同时仍然保留对遗留操作系统的适当支持程度。正确完成此操作后,您会在代码库中发现很多 if 语句。 :-)

关于c++ - 我可以在 Windows 98 上运行在 Visual Studio 2005 中编译的应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6831756/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com