Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I have some older applications that I've tried building under XE7, 32bit. When I execute them under XP, they execute just fine, despite the information given in https://www.embarcadero.com/products/cbuilder/faq and https://www.embarcadero.com/products/delphi/faq.

In other words, Embarcadero says an application built under XE6+ should not execute under XP, but it does (at least mine do).

Presumably the restriction is because the XE6+ compilers can produce API calls that XP is unable to handle.

My question is: could these non-XP API calls be generated as a consequence of "normal" GUI activity, or would such calls only happen if I were to explicitly make use of features not available in XP (e.g. Windows 7 Taskbar API).

I would like to move to XE7/XE8 for development, but I need my executables to remain compatible with XP.

like image 626
EBlake Avatar asked May 28 '15 11:05

EBlake


1 Answers

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

That's not what they are saying. Embarcadero won't test under XP, and won't offer any support for applications that target XP. However, Marco Cantu has stated that they will not actively stop programs working on XP.

Clearly if you call functions or libraries that are not available on XP then your program won't work. But simple programs built with XE8 do run on XP. If you need to use functionality that is not available on XP, you must use runtime explicit linking. And implement fallback functionality to handle the case when your program is running on XP.

The bottom line here is that you must test your programs carefully on the target platforms.

like image 136
David Heffernan Avatar answered Nov 15 '22 02:11

David Heffernan