
on Thu Feb 21 2008, "Robert Dailey" <rcdailey-AT-gmail.com> wrote:
Well I did a little more Trial & Error experimentation, and I've found that I get different behavior if I include <Python.h> before <boost/python.hpp> versus if I just omit <Python.h> inclusion all together.
Yes, http://boost.org/libs/python/doc/building.html#include-issues and the section that follow explain why you should not include <Python.h>
When I only include <boost/python.hpp>, I get an assertion instead of a crash. This assertion spits text out to my console window as follows:
*Assertion failed: (op->_ob_prev == NULL) == (op->_ob_next == NULL), file ..\Objects\object.c, line 63*
Which tells me that you have a mismatch between Boost.Python's idea of whether it is a debugging build and the Python executable or library's idea.
This assertion occurs during the call to Py_Initialize(). At this point this seems a little out of scope of boost (since at this point I haven't even called anything from boost that I'm aware of). I'm going to post this on the python mailing list to see if I can get some opinions there as well.
If you follow the instructions at http://boost.org/libs/python/doc/building.html and pass python-debugging=on on your bjam command line, everything "just works." -- Dave Abrahams Boost Consulting http://boost-consulting.com