我有 Windows 2003 服务器,带有基于 VC6 构建的可执行文件。我需要检查 Windows 2008 服务器(两台服务器都是 32 位)上可执行文件的兼容性。我知道我需要检查这两个版本的 ABI 兼容性。
如何确认任意两个版本的操作系统都具有 ABI 兼容性?或者 Windows 是否将 ABI 兼容性作为产品文档的一部分发布?
除了 ABI 兼容性之外,还有其他需要注意的事项吗?
最佳答案
Windows 维护不同版本之间的二进制 ABI 兼容性。这意味着程序不需要针对不同版本重新编译。
但是,这不足以保证程序能够在您尚未测试的版本上正确运行。可能出现问题的一些示例:
- 您使用了已弃用的 API,该 API 已在更高版本中删除。
- 您使用的 API 仅存在于更高版本的操作系统上,因此您的程序无法在旧版本上运行。
- 操作系统更改的功能会破坏您的应用程序。典型的例子是 Vista 中的 UAC。 ABI 没有改变,但一些 UAC 之前的应用程序无法在 UAC 下正确运行。
最重要的是,您确实需要了解二进制兼容性背后的理论。但这并不能免除您进行测试的需要。确保您已在所有支持的系统上测试了您的程序。或者至少是您能合理找到的尽可能多的。
关于Windows 和 ABI 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344393/