Building with MSVC 2015 for Windows XP

I recently switched to Visual Studio 2015 because it has so much nice new stuff. 

Today I discovered my plugin does not load under windows XP any longer. I did switch to the v140_xp platform toolset in introjucer required for windows XP. I am building with a static runtime. However the .dll just refuses to load on windows xp without warning. 

I then tried building JuceDemo with the same settings and this one runs fine on XP. 

So I tried the JuceDemoPlugin and it also refuses to load. The only changes I do to the default files is v140_xp toolset + static runtime. 

 

Then I built the VST2 SDK again example with the same platform toolset + static runtime and it does run on XP.

 

That leaves me with the conclusion the problem lies with the combination MSVC 2015 + Juce + AudioPlugin. Maybe it's a recent change in JUCE or something new in MSVC 2015.

I have to add it all worked fine with MSVC 2013 (with a slightly older version of JUCE). And I also did try to build with an older Toolset I happened to have installed (2010) and XP could still not load the .dll.

 

Has anyone gotten a juce audio plugin build with MSVC 2015 to run on Windows XP? What did you do? Is there another setting to be tweaked?

Does anyone have an idea how I could even get meaningful error messages on xp? I don't have dev tools installed on that and it just does nothing when trying to load the plugins. It does smell to me like a missing system .dll but I forgot how to figure out dependencies.

 

I looked at the files with PEDUMP, but I cannot figure out why they do not load. The only major difference I see is that JUCE now uses many more winsock functions in ws2_32.dll and loads things from OLEAUT32.dll instead of ole32.dll. But all of these are present on my xp machine.. so I'm quite puzzled.

I tried some more stuff (tried to build and debug the juce demo plugin host to figure out how loading fails in the debugger). I found out Introjucer does no longer build with MSVC 2005 due to compilation errors and the version available on juce.com does not launch on XP even with the 2015 redist files installed. If I build introjucer myself on win10 with the v140_xp toolset, it does run.

Has win xp support been dropped? What's the current min os requirement for Windows?

In the meantime I ran a host in the msvc 2005 debugger and attempted to load the JuceDemoPlugin.dll. In the hope someone know what this means... here's the error I am getting:

it tries to load a dll called "api-ms-win-core-synch-11-2-0.dll" and then I get illegal access at 0x0.

Has win xp support been dropped? What's the current min os requirement for Windows?

We haven't actively supported it for a long time, but it has mostly still worked if you use older build tools. But I'm not sure whether newer versions of Visual Studio actually produce code that will run on XP.

Do you really still have users who use it??

I don't know for sure, but I guess so. Some audio people are extremly attached to their old gear & software after all.

The problem is currently I don't know this error means plugin builds also break under Vista.. Now I don't know what the min OS version for my plugins is. I absolutely would like to avoid trying to get Vista installed for testing ;). It would be great if there was an official min OS requirement for JUCE somewhere. Then I'd just use that, but I think that information does not exist on juce.com, or does it?

I agree it is time to abandon XP for good - as well as MSVC 2005 support in Introjucer which seems completely broken. If JUCE would have an official statement about that, it might help. On the other hand a strong reason to use JUCE imho is that it's mostly independent of OS changes and being able to run on older OSes nicely proves that point.

Anyway I'm currently setting up MSVC 2013 again to see if that makes things work again as they used to.

 

MSVC 2005 support in Introjucer which seems completely broken.

We had no idea there was a problem with the VS2005 exporter, nobody reported any issues, and we haven't changed that code for a very long time.

I built the Juce Demo Plugin on another machine with Juce tip and VS 2013 and now it does work correctly on windows XP.

So the problem lies with MSVC 2015. Maybe some additional configuration would make things work, but I think I'm just going to build with VS 2013 for my current release and still get XP compatibility for free.

If anyone knows how to tweak VS2015 to produce XP compatible Juce plugins, please let me know here ;). If I figure it out later, I'll certainly post something. It would also be very interesting to know if vs2015 work on win2000/vista. Win7 is fine.

VS2015 probably doesn't support it. Bear in mind that even Microsoft officially dropped support for XP a long time ago!

The exporter is fine, but some JUCE code does no longer compile in VS2005. Well to be honest I didn't try hard, I just got tons or errors immediately and decided to give up.

Not 100% true. XP is still somewhat supported for enterprises and creative users move the updates to normal xp installs.

Additionally MSVC 2015 officially supports building for XP, that's why it includes that v140_xp toolset. As I experienced I was able to build Introjucer and JuceDemo for XP with the right settings and also the vst2 example worked out of the box.

the problem with the plugins seems to be an odd edge case.

 

As far as Microsoft is concerned, that's completely wrong. XP is dead in the non-embedded world - even its extended support has finished. (!)

  • https://support.microsoft.com/en-us/lifecycle/search/default.aspx?alpha=Windows%20XP
  • http://windows.microsoft.com/en-us/windows/end-support-help
  • https://www.microsoft.com/en-ca/WindowsForBusiness/end-of-xp-support
  • https://www.microsoft.com/windows/en-ca/xp/end-of-xp-support.aspx

Marketshare as per the Steam Survey: http://store.steampowered.com/hwsurvey

  • Windows XP 32 bit: 2.76%

Marketshare as per the Global Stats Stats Counter: http://gs.statcounter.com/#desktop-os-ww-monthly-201408-201508-bar

  • Windows XP: 11.92%

Well if you check the internet you'll find out there is now "custom support" for xp for selected customers... basically large corps still get updates by paying microsoft. And some of these leak. 

Why do you think microsoft still supports building for XP in VS2015? Although it sure is broken for me :(.

 

 

Anyway I don't want to support XP, I just want to have clarification.

11.9% is much more than I would have expected btw. That's insane for a mostly useless OS by current standards.

same here. I updated to visual 2015 and I use the v140_xp toolset, but a user reported that my last build do not run on xp.

Is there anyone that find a way to get it working?

Is DirectWrite in JUCE_graphics disabled too ?

no, JUCE_USE_DIRECTWRITE is set to 1, but it was like that also when I was building with visual 2012. That should be changed when working with visual 2015? I can't use it anymore?

 

DirectWrite isn't supported at all on Windows XP. I don't even get how your plug-in has been working on XP if you have not removed this flag. I have never been able to do so with VS2008 back in the days I was working on XP to compile my plug-ins.