[M3devel] cm3 linking to Visual C++ runtime
Jay K
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
OR:
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.
- Jay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20160228/d0ad332a/attachment-0001.html>
More information about the M3devel
mailing list