Unresolved symbols in MSVCRT.DLL when running a py2exe packaged program.

Tim Peters tim.one at home.com
Fri Mar 2 13:10:25 EST 2001


[Tom]
> I disagree.
>
> You can distribute system dll's.  You are expected to, and sometimes you
> have to.  You must insure that the version you load is at least
> equal to the version that you linked against.
>
> I have done this (distribute system DLL's) on all windows except WinME and
> the 16bit ones.  Unfortunately I can't say how I did it precisely, because
> I just used InstallShield.

And Python just uses the Wise installer.  They aren't that fancy under the
covers, though -- they just "follow the rules", checking version numbers,
bumping refcounts on refcounted DLLs, and arranging for a reboot if they need
to replace something.  But that stuff is ineffective on the newer systems
with SFP.

> But I believe that, where SFP exists, you must use specific and new
> API's to replace DLL's, otherwise the system will back out your changes.

My understanding is that SFP isn't so easily fooled; e.g.,

    http://support.microsoft.com/support/kb/articles/Q253/5/71.ASP

    http://www.microsoft.com/hwdev/sfp/wfp.htm

SFP won't allow replacement of protected files via just using API tricks; it
also sucks in a digital signature scheme, and only MS can supply signatures
that work.

> One solution is to specify the changes in an .INF file and let the system
> worry about these details (but this has its limitations).
>
> I assume that Python itself updates the MSVCRT.dll.

The PythonLabs Windows installer tries to, yes.

> Might look at how it does it on Win2K.

My understanding is that it can't (but Win2K ships with a "good enough" set
of DLLs, so the version check shouldn't trigger there -- yet).

BTW, I'm *glad* MS is doing SFP!  Whatever Windows Life may be in theory,
DLLs in practice cannot be mixed and matched -- you need a self-consistent
set else Very Strange Things Happen.  And with about 1,000 DLLs under a
typical Windows system directory, that's just impossible for app developers
to keep straight.  May well be impossible for MS to keep straight too, but at
least it's no longer impossible for them to *try* to keep 'em straight now.

something-to-ponder-each-time-your-win9x-crashes-ly y'rs  - tim





More information about the Python-list mailing list