[M3devel] cm3 linking to Visual C++ runtime
jay.krell at cornell.edu
Sun Feb 28 23:39:15 CET 2016
For a very long time, to link the Visual C++ C runtime library, you linked to one of:
libcmt.lib -- static C runtime
msvcrt.lib -- import library for dynamic C runtime, and static startup code
libcmtD.lib - debug static C runtime
msvcrtD.lib -- import library for debug dynamic C runtime, and static startup code
This changes with Visual C++ 14/2015.
The C runtime has been split into three pieces.
I believe you have to link to three libraries.
msvcrt.lib ucrt.lib vcruntime.lib
libcmt.lib libucrt.lib libvcruntime.lib
Part of the rationale here is to actually slow down the rate of change.
Previously, the entire C runtime was revised with every release.
Now, a large chunk of it has been moved out into the "operating system"
and will remain compatible with all toolsets. That is the "ucrt" part.
U is for universal.
"makefile breakage" is unfortunate.
I'm not sure what to do in the config files, to automatically work with anything.
Perhaps remove the /nodefaultlib.
/nodefaultlib has a lot of precedent in multiple systems, but so does not using it.
For now, please adjust your config files.
Probably removing /nodefaultlib is the right thing.
A long time ago, there were cm3 releases set to use the non-thread-safe C runtime.
/nodefaultlib was needed to workaround that.
The non-thread-safe C runtime has not now existed for a while.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the M3devel