<div dir="ltr">Hi,<br><br>I think I found a solution. My very limited tests showed no problems so far. Question remains whether I should expect something bad to happen. Is it possible for someone with more insight into the code (shy glance to the Erlang emulator coders :) ) to give a rough estimation whether static binding of the C runtime library might lead to problems?<br>
<br>I understand it is difficult by various aspects to publish the test suite used by Ericsson to test the Erlang distributions. And probably difficult to use. But here I ran into a situation where it would be quite usefull...<br>
<br>My approach is attached to this mail. The small diffs simply make sure that the /MT switch is used by the compiler/linker. Probably they overshoot the mark. You need to run 'otp_build configure' after applying the patches.<br>
<br>And my initial assumption about the error message below was wrong. _dosmaperr is a function which is contained in the static libcmt but not in msvcr??.dll. I have no clue why. However you do not want it when statically linking to libcmt.<br>
<br>Regards,<br>Michael<br><br><div class="gmail_quote">On Sun, Oct 5, 2008 at 7:04 PM, Michael Regen <span dir="ltr"><<a href="mailto:michael.regen@gmail.com">michael.regen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr">Hi,<br><br>Does anyone a little bit more experienced with the Erlang build mechanism know how to compile and link Erlang with libcmt instead of msvcrt?<br>The default mechanism builds Erlang with the /MD switch which means the C standard libraries are accessed as threaded dll MSVCR??.DLL. This also means you cannot simply copy Erlang to another computer as long as the correct C runtime is not installed there.<br>

<br>I am trying to figure out how to statically bind the libcmt library. Normally you do this by using the /MT switch.<br><br>So far I tried to change the erts\etc\win32\cygwin_tools\vc\cc.sh and ld.sh scripts but with no good effects. I always get the usual error messages like if you mix libraries compiled with different switches.<br>

<br>In cc.sh setting<br>
  MD_FORCED=true<br>
  MD=-MT<br>
and in ld.sh<br>
  STDLIB=LIBCMT.LIB<br><br>just leads me to:<br><br>LIBCMT.LIB(dosmap.obj) : error LNK2005: __dosmaperr already defined in dosmap.o<br>   Creating library c:/dev/erlang/ErlangOTP/otp_src_R12B-4/bin/win32/erl_dll.lib and object c:/dev/erlang/ErlangOTP/otp_src_R12B-4/bin/win32/erl_dll.exp<br>

c:/dev/erlang/ErlangOTP/otp_src_R12B-4/bin/win32/beam.smp.dll : fatal error LNK1169: one or more multiply defined symbols found<br><br>Thank you!<br><br>Regards,<br>Michael<br></div>
</blockquote></div><br></div>