Windows versions of Python---pros and cons?

Frédéric Cordonier fcordonier at myrealbox.com
Fri Jun 21 04:22:13 EDT 2002


Gerhard Häring wrote:

>* Trent Mick <trentm at ActiveState.com> [2002-06-19 15:46 -0700]:
>  
>
>>My understanding is that for C extensions to work they must be built
>>with the same compiler as that used to build the Python with which they
>>will run. (I may be wrong. Someone please correct me if I am.)
>>    
>>
>
>You are wrong. As long as you link to the python{major}{minor}.dll you
>are binary compatible, no matter which compiler you use. It's just a
>matter of providing an additional compiler option to distutils, like in:
>
>    python setup.py build --compiler=mingw32
>
>Gerhard
>  
>
Hello,

I am no windows or C++ specialist, but I happened to write extensions 
for Python in the scope of unitary testing code for embedded systems.

I did extensions with both Borland C++ 5.01 and mingw32. Under windows, 
it is always easier to link the project with a .lib file rather than 
directly connecting to the .dll. The problem with Borland is that the 
.lib for Pythonxx.dll is tricky to generate. In fact, Borland adds some 
'_' to the exported symbols.  You have to:
 > impdef Python22.def Python22.dll

modify the Python22.def to add leading '_' to the symbols (I use gvim 
that is really handy for this kind of tasks).

then
 > implib Python22.lib Python22.def

For Mingw32, the .lib file can be generated with 'pexports' and 'dlltool'.

Moreover, I wrote extensions with SWIG using Borland. One problem I 
encountered is that the main module entry is not exported correctly 
(when importing the module, an exception is raised), because SWIGEXPORT 
is not adapted (maybe specific to BC++5.01?).
You have to redefine it to
#define SWIGEXPORT(a)   a _export FAR PASCAL

Last, using distutil with Borland is certainly possible, but not with 
version 5.01 (my customer only has this version). Some linker options 
used with '--compler=bcpp' are not known by 5.01. I had to patch 
distutils to make it work. If ever someone needs it, I will go back to 
my notebook to check what was done...

Fred.







More information about the Python-list mailing list