On Tue, Oct 13, 2009 at 7:51 PM, Marc Lehmann <schm...@schmorp.de> wrote: > On Tue, Oct 13, 2009 at 07:41:03PM -0700, Simon <simo...@gmail.com> wrote: >> test' to work with an EV compiled with cl.exe version 7.x. However >> 'nmake test' with an EV compiled with cl.exe version 9.x causes a >> crash although compilation causes no errors or warnings. Has anybody >> got 'nmake test' to work with an EV compiled with cl.exe version 9.x? > > The windows compilers are not generally binary compatible with each other > (even when by the same vendor) - have you tried compiling with the same > compiler as your perl binary was compiled with?
So I figured out what the problem is: The problem occurs when the Microsoft runtime used by Perl itself (usually msvcrt.dll and guarenteed to be pre-installed on all Windows installations) doesn't match the Microsoft runtime automatically used by more recent Visual Studio additions (e.g. Visual Studio C++ 2008 Express Edition only allows linking against msvcrt90.dll which *isn't* guarenteed to be pre-installed on all Windows installations). This problem has nothing to do with 64 bit Windows etc. Because file descriptors are not interchangeable between msvcrt.dll and msvcrt90.dll and EV does interchange file descriptors between msvcrt.dll (via Perl) and msvcrt90.dll (directly) then this is what causes the crash. There are 4 possible solutions to this problem: a. Compile EV with the same version of VS used to compile Perl (i.e. an older version of VS which links against msvcrt.dll) b. Re-compile Perl with the latest VS (i.e. Perl will link against msvcrt90.dll instead of msvcrt.dll) c. Figure out how to make the latest VS link against msvcrt.dll (some people say this is possible although difficult) d. Hack EV so that it doesn't pass any of it's file descriptors to Perl (not sure how difficult this is) This long blog article contains all the gory details: http://kobyk.wordpress.com/2007/07/20/dynamically-linking-with-msvcrtdll-using-visual-c-2005/ Hope this helps somebody, Simon _______________________________________________ libev mailing list libev@lists.schmorp.de http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev