Targetting Windows XP with Windows SDK 8.x

Andras Timar timar74 at gmail.com
Thu Apr 16 01:09:11 PDT 2015


Hi,

In the past few days I made some experiments with LibreOffice 4.4.
configure suggests that SDK version 7.1A should be used for targetting
Windows XP. configure also says that SDK version 7.1A is not known to
work with VS2013, and it is true. I could not build LibreOffice 4.4
with VS2013 and SDK 7.1A, there were many compilation errors.

I found an article:
https://tedwvc.wordpress.com/2014/01/01/how-to-target-xp-with-vc2012-or-vc2013-and-continue-to-use-the-windows-8-x-sdk/

It says:
"Say we’ve decided to use Windows 8.x SDK while still allowing our app
to run on XP. Are there any options available? i.e. can you keep using
the v110/v120 toolsets instead of the v110_xp/v120_xp toolsets? Yes,
it turns out that Microsoft left a nice loophole in the code to do
exactly that. Notice the mysterious define in the block of code above
named _ATL_XP_TARGETING. Turns out this is an alternative way to
support XP targeting while _USING_V110_SDK71_ is NOT defined. So if
you really want to support XP while using Windows 8.x SDK, we simply
need to ensure our code is built with _ATL_XP_TARGETING defined. The
easiest way to do this is to add a /D_ATL_XP_TARGETING flag to our
C/C++ command line options in project properties."

I added -D_ATL_XP_TARGETING flag to
solenv/gbuild/platform/com_MSC_defs.mk instead of the last conditional
flag  $(if $(findstring
110_70,$(VCVER)_$(WINDOWS_SDK_VERSION)),-D_USING_V110_SDK71_), and I
built LibreOffice 4.4 with VS2013 and SDK 8.1. It started on Windows
XP. Then I reverted my patch, and made a full build again.
Surprisingly, the resulting build also started on Windows XP.

So my question is: how is that possible? What config does result a
built which does not start on Windows XP then?

I have not tried this with master. What is the difference between
master and 4.4 in this regard?

Thanks,
Andras


More information about the LibreOffice mailing list