[C++-sig] [Boost.Python] Solaris / gcc2.95.2 wchar.h problems

David Abrahams dave at boost-consulting.com
Wed Nov 16 18:42:35 CET 2005

Jan Langer <jan at langernetz.de> writes:

> Hello,
> I read that this newsgroup is suitable for Boost.Python problems.
> I wanted to compile Boost 1.33.0 and I ran into problems with
> Boost.Python. My system is Solaris 5.7 with gcc 2.95.2. The Python
> version is 2.4.1. When compling the file inheritance.cpp it includes
> integer_traits.hpp which exits with an error in line 116 because
> WCHAR_MIN and WCHAR_MAX are not defined. 

You should take this up with the maintainer of the relevant part of
integer_traits.hpp.  cvs annotate shows it to be John Maddock.

1.20         (johnmadd 21-Oct-02): // These are an implementation detail and not part of the interface
1.20         (johnmadd 21-Oct-02): #include <limits.h>
1.26         (johnmadd 17-Dec-04): // we need wchar.h for WCHAR_MAX/MIN but not all platforms provide it, 
1.26         (johnmadd 17-Dec-04): // and some may have <wchar.h> but not <cwchar> ...
1.26         (johnmadd 17-Dec-04): #if !defined(BOOST_NO_INTRINSIC_WCHAR_T) && (!defined(BOOST_NO_CWCHAR) || defined(sun) || defined(__sun))
1.20         (johnmadd 21-Oct-02): #include <wchar.h>
1.20         (johnmadd 21-Oct-02): #endif

> However, my wchar.h include
> file defines those two macros. I couldn't find what was going wrong, but
> moving the include of integer_traits.hpp in inheritance.cpp to the top
> of the list of include files solves the problem. 

You can't do that. Translation units that use Python.h have to start
with a Python header, and as a consequence translation units that use
Boost.Python have to start with a Boost.Python header.  Otherwise all
heck breaks loose.

Dave Abrahams
Boost Consulting

More information about the Cplusplus-sig mailing list