为什么使用 Embarcadero XE6 或更高版本开发的应用程序不能针对 XP?

Why can applications developed with Embarcadero XE6 or higher not target XP?

我尝试在 XE7、32 位下构建一些较旧的应用程序。当我在 XP 下执行它们时,它们执行得很好,尽管在 https://www.embarcadero.com/products/cbuilder/faq and https://www.embarcadero.com/products/delphi/faq.

中给出了信息

换句话说,Embarcadero 说在 XE6+ 下构建的应用程序不应该在 XP 下执行,但它可以(至少我的可以)。

大概是因为 XE6+ 编译器可以产生 XP 无法处理的 API 调用。

我的问题是:这些非 XP API 调用是否可以作为 "normal" GUI activity 的结果生成,或者此类调用是否仅在我明确进行时才会发生使用 XP 中不可用的功能(例如 Windows 7 任务栏 API)。

我想转到 XE7/XE8 进行开发,但我需要我的可执行文件与 XP 保持兼容。

Embarcadero says an application built under XE6+ should not execute under XP.

他们不是这么说的。 Embarcadero 不会在 XP 下进行测试,也不会对针对 XP 的应用程序提供任何支持。然而,Marco Cantu 表示他们不会主动停止在 XP 上运行的程序。

很明显,如果您调用的函数或库在 XP 上不可用,那么您的程序将无法运行。但是用 XE8 构建的简单程序在 XP 上做 运行。如果您需要使用 XP 上不可用的功能,则必须使用 运行time 显式链接。并实施回退功能来处理您的程序在 XP 上 运行ning 时的情况。

这里的底线是您必须在目标平台上仔细测试您的程序。