I am compiling an application that is a combination of C++ and Fortran (most of the work is done by the Fortran, there is a C++ wrapper that parses some XML and hands the result to the Fortran).
The code is compiled with VS 2012 on a Windows 7 machine, but also has to run on a Windows XP machine. When I first compiled it I got some errors due to the initialization code trying to call a function in kernel32.dll that is only in Vista and later. I was pointed to https://software.intel.com/en-us/articles/linking-applications-using-visual-studio-2012-to-run-on-wi...; I did what was recommended -- for the C++ compiles I set the Platform to "Visual Studio 2012 - Windows XP (v110_xp)" and in the Fortran link I set the subsystem to "/SUBSYSTEM:CONSOLE,5.01".
Well, after that the debug version of the code ran fine on Windows XP. But I just compiled a release version, and now the problem has popped up all over again. I get "The procedure entry point FlushProcessWriteBuffers could not be located in the dynamic link library KERNEL32.dll" when I try to run. So the XP problem is back again despite me having all the magic parameters set properly.
Does anybody have any idea what to do?
I think that the root issue is that applications built using the VS2012 libraries are not always compatible with XP. In some cases there may be work-arounds, but it is going to be a slog. Have you considered building with a version of VS that is compatible with XP?