Mark Hammond <mhamm...@users.sourceforge.net> added the comment:

I'm failing to get a new pywin32 out of the door due to this issue.  I've spent 
a few hours playing with this and I think the analysis is generally correct 
here.  The key thing is that when using distutils, the extensions end up with a 
manifest (albeit one without a reference to the CRT) whereas the extensions 
shipped with Python have no manifest at all.

I agree with Martin that it seems strange the CRT fails to be used even though 
the CRT is obviously already loaded, but it seems to be a fact.  I can't find 
much on this, but suspect it relates to the different "activation contexts" in 
use and how the activation contexts are designed to allow side-by-side loading 
of DLLs; Windows doesn't know if the version of the DLL already loaded is 
suitable.  I also guess that the fact the DLL has *any* manifest means they use 
a more strict interpretation of things (ie, refuse to use already loaded ones) 
whereas a dll with no manifest gets given a little more slack.

I can confirm that with the attached patch, pywin32 builds and installs fine on 
a machine without the CRT installed globally - so I'm +1 on this patch with one 
caveat:  The check for '.pyd' should either be expanded to include '.dll', or 
else the check should just use the 'target_desc == CCompiler.EXECUTABLE' 
condition already used.

I'm happy to make the change once I get some feedback and/or guidance about 
where I should check this in - I believe it is too late for python 2.6 which is 
a shame...

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue7833>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to