Trouble building pywin32 with Visual Studio 2005

danfike at gmail.com danfike at gmail.com
Wed Nov 14 13:41:44 EST 2007


Hi everybody...

I'm hoping one of you reading this can help me out here. I'm having
trouble getting pywin32 to build with Visual Studio 2005. But first,
some background.

I'm embedding Python in an MFC application. I've manually built
Python .lib and .dll files using Visual Studio 2005 from the solution/
project files in the PCBuild8 folder. I've got a totally happy,
working Python interpreter in my MFC application.

When I use pre-built pywin32 packages, some strange crashes occur.
Specifically, if I import win32com.server.register and call the
RegisterClasses function, I get a complaint regarding an attempt to
free unallocated memory.

Now, my theory on this issue is that DLLs like win32api.pyd, which I
acquired pre-built, were built with Visual Studio 2003, and they
depend on msvcr71.dll. My Python/MFC application, on the other hand,
was built with Visual Studio 2005, and is linking with msvcr80.dll. If
memory gets allocated through one DLL, and an attempt is made at
freeing it in the other DLL, bad things can happen, since the freeing
DLL doesn't have any header information on the allocated memory.

In order to test this theory (and potentially fix it), I want to re-
build the pywin32 stuff using Visual Studio 2005. Now I've never built
pywin32, so please excuse any "noobness" from here on out. I
downloaded the pywin32-210.zip source from sourceforge. I tried
running "setup.py build" per the Readme, and I received the following
message.

Warning - can't find an installed platform SDK
error: Python was built with Visual Studio 2003;
extensions must be built with a compiler that can generate compatible
binaries. Visual Studio 2003 was not found on this system. if you have
Cygwin installed, you can try compiling with MingW32, by passing "-c
mingw32" to setup.py.

(Note that I don't have the Platform SDK - This is a Vista machine, so
I've got what they now are calling the Windows SDK. If it ends up
being a problem, I'll tackle it when it shows up)

The logical conclusion to jump to from this error message is that
pywin32 is trying to build with VS2005, but it thinks that Python was
built with VS2003. Well, in a manner of speaking, that is true. I did
have a regular Python installation in C:\Python25, straight from one
of the MSI installers. That regular Python installation was
undoubtedly compiled with VS2003. I guess what I need to do is find a
way to replace the default installation, or certain files within it,
with stuff I compiled myself using VS2005. I tried replacing all of
the python25[_d].dll and python[w][_d].exe files with those that I
built, and that isn't helping. I considered creating a Python
installer with the msi.py that is included in the Python Source, but
that requires pywin32 (according to the README), and that's what I'm
trying to build.

I tried going through the setup.py code to find out where it is
acquiring this "Python was built with Visual Studio 2003" information,
but I keep getting lost in the code, so I can't figure out which, if
any, file(s) to change/replace.




More information about the Python-list mailing list