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

Ske*_*ith 7 c++ visual-studio-2005 windows-98 visual-c++

我在Microsoft Visual Studio 2005中构建了一个程序,它工作正常.

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

Cod*_*ray 6

是的,使用VS 2005编译的应用程序在Windows 98和Me上运行完美.我自己运行了几个,并保持VS 2005并安装正是为了这个目的.早在Windows 98中就支持CRT可再发行组件的2005版.

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

这就是您需要使用定义的通用字符类型和函数的原因tchar.h,而不是Unicode构建首选的宽字符等价物.总是限定使用串TCHAR类型(或LPTSTRLPCTSTR类型),其被有条件地限定wchar_tchar适当.使用以_tcs...字母开头的字符串操作函数,而不是特定于宽字符或窄字符的字符串操作函数.确保在调用函数时,始终调用泛型类型定义版本,而不是以带有AW后缀结尾的ANSI或特定宽泛版本.

如果你从一开始就没有这样做,那么回过头来解决这个问题可能需要做很多工作.如果是这种情况,您可以在Windows 95/98/ME系统上查看Microsoft Layer for Unicode,它提供了一个抽象层,允许您在原生Windows 9x操作系统上调用Unicode功能,而这些操作系统本身不受支持.

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

对于要打电话的时候,你在哪里,他们的新系统运行没有在Windows 98中存在回功能情况下可用的,你需要格外小心,叫他们动态的,而不是将它们添加到您的应用程序DLL导入表(链接器通常为您自动执行的操作).这意味着自己定义函数指针,并使用LoadLibraryGetProcAddress函数来调用它们.这不好玩,但确实有效.

或者,您可以将链接器配置为"延迟加载"库(检查项目的属性).这样更方便,但显然您需要确保调用目标操作系统上可用的功能,否则应用程序将崩溃.

无论哪种方式,该GetVersionEx函数都会告诉您需要了解的有关当前主机操作系统的所有信息,以便您的代码可以采用不同的路径(如果可用则调用较新的函数,如果不可用则调用较旧的函数),具体取决于环境.这使您可以在新系统上支持新功能,同时仍然保留对旧版操作系统的任何程度的支持.如果if做得好,你会在代码库中找到很多语句.:-)