[Python-Dev] Maybe we should have a C++ extension for testing...

Barry Scott barry at barrys-emacs.org
Sat Sep 23 14:06:34 CEST 2006


On Sep 13, 2006, at 18:46, skip at pobox.com wrote:

>
> Building Python with C and then linking in extensions written in or  
> wrapped
> with C++ can present problems, at least in some situations.  I  
> don't know if
> it's kosher to build that way, but folks do.  We're bumping into such
> problems at work using Solaris 10 and Python 2.4 (building  
> matplotlib, which
> is largely written in C++), and it appears others have similar  
> problems:
>
>     http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6395191
>     http://mail.python.org/pipermail/patches/2005-June/017820.html
>     http://mail.python.org/pipermail/python-bugs-list/2005-November/ 
> 030900.html
>
> I attached a comment to the third item yesterday (even though it was
> closed).
>
> One of our C++ gurus (that's definitely not me!) patched the Python  
> source
> to include <wchar.h> at the top of Python.h.  That seems to have  
> solved our
> problems, but seems to be a symptomatic fix.  I got to thinking,  
> should we
> a) encourage people to compile Python with a C++ compiler if most/ 
> all of
> their extensions are written in C++ anyway (does that even work if  
> one or
> more extensions are written in C?), or b) should the standard  
> distribution
> maybe include a toy extension written in C++ whose sole purpose is  
> to test
> for cross-language problems?

Mixing of C and C++ code is fully supported by the compilers and  
linkers.
There is no need to compile the python core as C++ code, indeed if you
did only C++ extension could use it!

In the distent past  there had been problems with some
unix distributions linking python in such a way that C++ code would not
initialise. The major distributions seem to have sort these problems  
out.
But clearly Solaris has a problem.

It would be worth finding out out why it was necessary to include  
<wchar.h>
to fix the problems. If you do add a C++ test extension it will need  
to do what
ever it was that <wchar.h> fixes.

 From what I can remember attempts to use std::cout would fail and I  
think
static object initialisation would fail. The test code would need to  
do all these
things and verify they are working.

Barry (PyCXX cxx.sourceforge.net)





More information about the Python-Dev mailing list