All,
Since the beginning of time we have always used a weird mix of using the static C runtime for some
parts of blender while using the dynamic runtime for others.
No-one exactly remembers how this came to be, but what was clear that mixing runtimes is ‘not great’
and that it eventually would cause issues, which it recently did [1]
Today I’m cleaning it up and switching blender over to the dynamic runtime on windows.
Now sadly this requires a whole new library set so if you are building blender on windows you may
have some hiccups and unfortunately a large download.
Ideally you’d run ‘make update’ twice and it will sort it self out. (Once to get the updated make.bat
that knows about the new libs, and a second time to actually grab them)
However there are some side cases where people did not follow our building guide and/or systems
where cmake just behaved oddly, so here is a list of oddities you may run into and how to resolve them.
- I get a build error along the lines of:
Windows requires pre-compiled libs at: 'c:/blender-git/blender/../lib/win64_vc15'.
Please run make update in the blender source folder to obtain them.
Solution:
Do what it says, if make update
does not work for you, see 2
- I checked out the libraries my self, I don’t have SVN
in my path and/or “make update” does not work for me.
It happens, not everybody is following our building instructions for various reasons, and some environments just don’t seem to play nice with our scripts.
Solution:
You can check out the new set of libraries manually from
https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64_vc15
just make sure they and up in the next to the win64_vc14 folder you currently have and it should work.
- I have a linker error mentioning a RuntimeLibrary mismatch
These generally come in the form of:
'RuntimeLibrary': value 'MTd_StaticRelease' doesn't match value 'MDd_DynamicRelease' in [somefile]
This seems to be coming from CMake not always picking up on changes in the platform settings.
Solution:
Remove your build folder and start a fresh build
- MSVC 2015
MSVC2015 has been superseded by 2 newer versions both available for free, 2015 support will be dialed back to the same level as 32 bit support. We don’t test it nor supply libraries for it anymore, however if you have your own set of libraries and have patches that help with vs2015 specific issues you are always welcome to submit those.
Solution: Update to vs2017 or vs2019
- I have a branch that has not merged this change yet.
That’s OK, the static vc14 libraries will be available for some time. However no further updates will be done to them.
- I build with VS2017 and have a linker error about
__std_swap_ranges_trivially_swappable_noalias
Solution: The libs were build with msvc 2017 15.9 the version you are using is older than that, re-run the vs2017 installer and let it update to the latest version.
Special acknowledgments:
Thanks to @Harleya and @deadpin on chat for helping test so we could have an as smooth as possible transition to the new libs.