on Thu Feb 19 2009, "Martin Walser" <NurEinDummy-AT-gmx.de> wrote:
> Hi! :) > > > I'm on the best way to become completely insane. > > I'm trying to set up VS2005 to run Boost Python in debug mode. > > Sorry for the long text... > > > Problem summary: > > - applications crash in debug mode > - dependencies to python25_d.dll AND python25.dll in > boost_python-vc80-mt-gdy-1_35.dll - normal?? No, that's not normal. Or at least, it's not intended. You might try using <define>BOOST_ALL_NO_LIB to suppress automatic linking altogether. > > > > > Only today I found out that I have to pass a special parameter to REALLY get > a debug version. > > So I went into .\boost_1_35_0\libs\python\example\quickstart > and called bjam with: > > bjam toolset=msvc --verbose-test test python-debugging=on > > Finally I got my boost_python-vc80-mt-gdy-1_35.dll & .lib files. > > Yet, simply defining BOOST_DEBUG_PYTHON & BOOST_ALL_NO_LIB in the header > didn't work out. What header? Why would you do that? python-debugging=on should define BOOST_DEBUG_PYTHON automatically. As for BOOST_ALL_NO_LIB, try adding define=BOOST_ALL_NO_LIB to your bjam command line. > Had to put them in the preprocessor to make VC8 use the ...-gdy-... lib > instead of the ...-gd-... lib. > And to make him stop importing Python25.lib instead of python25_d.lib when > building my .pyd C extension. > > > Finally I found out that I have to add a _d to my extension filename as well > so that python_d.exe finds the class I want to import. python-debugging=on should be handling that as well. > But now... my application crashes right after starting. > Even the HelloWorld application from the tutorial crashes instantly: > > Unhandled exception at ... in python_d.exe > > And the debugger points to boost_1_35_0\libs\python\src\object\class.cpp's: > > > [...] > > BOOST_PYTHON_DECL type_handle class_type() > { > if (class_type_object.tp_dict == 0) > { > class_type_object.ob_type = incref(class_metatype().get()); > class_type_object.tp_base = &PyBaseObject_Type; > =>!!! if (PyType_Ready(&class_type_object)) > return type_handle(); > // class_type_object.tp_setattro = class_setattro; > } > return type_handle(borrowed(&class_type_object)); > } Sounds like something is still linking PYTHON_DEBUGGING code with a non-debug python.dll (or vice-versa). > Additionally, when putting boost_python-vc80-mt-gdy-1_35.dll in dependency > walker I find dependencies to python25_d.dll AND python25.dll in it. > I temporarily deleted python25.lib for testing ... and indeed, bjam demands > python25.lib when building. > > Screenshot: http://i41.tinypic.com/2551g5j.jpg > > > I hope someone with more experience got a clue... > I'm lost. :( Did you follow the directions in http://boost.org/libs/python/doc/building.html ? This used to work. If someone broke it, I'm not sure how or who. -- Dave Abrahams BoostPro Computing http://www.boostpro.com _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig