[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 
   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