[TL;DR]
Do either of the following:
- Installing an older visual studio version next to VS2015 allows compiling “like old times” from within VS2015 …
- Add new VS2015 libraries to the “additional dependencies” section in the linker “input” options (please read on)
MS introduced many new “breaking” changes to Visual C++ that comes with VS2015 … few of which affected projects that statically link to binaries that were compiled using older versions (like this one), they highlighted many of these changes here.
For example, they re-defined stdout, stdin and stderr! which brakes pretty much every CRT application linking to an old library.
If you don’t mind wasting a few additional gigabytes, a dirty quick-fix is installing Visual studio 2013 “or whatever version you used before” next to 2015, then use it only for compiling
But if you want to stick to 2015, as mentioned in the previous link, if you have set the project’s Linker property Ignore All Default Libraries to Yes or you are using the /NODEFAULTLIB linker option on the command line, then you must update your list of libraries (in the Additional Dependencies property) to include the new, refactored libraries “for my project, that was ucrt.lib” .
After doing that, all compiled correctly without issues … if not, additional VS2015 libraries you might want to take a look at are:
- legacy_stdio_definitions.lib
- legacy_stdio_wide_specifiers.lib
- ucrtbase.lib
- libvcruntime.lib
for me, ucrt.lib was the only one I had to add …