Hi, hi! New user, and probably making some silly mistakes, but a few hours with search engines have not provided an answer... Problem: I'm trying to embed Python routines in a DLL and it's not working. Platform and versions: Python 2.7.3 (I have been unable to get boost to compile/link to python 3) Boost 1.54 (svn 84094) Windows 7 (x32) - MSVC 9 Detailed problem: When calling Py_Initialize() an assertion fails the program crashes in object.c line 65- assert((op->_ob_prev == NULL) == (op->_ob_next == NULL)); Test Code: Py_Initialize(); /* Failure point */ m_main_module = boost::python::import("__main__"); m_main_namespace = m_main_module.attr("__dict__"); boost::python::exec("result = 5 ** 2", m_main_namespace); int Tester = boost::python::extract<int>(m_main_namespace["result"]); Values: + op 0x05be172c __Py_NoneStruct {_ob_next=0x00000011 _ob_prev=0x00000000 ob_refcnt=17 ...} _object * + op->_ob_next 0x00000011 {_ob_next=??? _ob_prev=??? ob_refcnt=??? ...} _object * + op->_ob_prev 0x00000000 {_ob_next=??? _ob_prev=??? ob_refcnt=??? ...} _object * Partial Call Stack: msvcr90d.dll!__wassert() + 0xb64 bytes python27_d.dll!_Py_AddToAllObjects(_object * op=0x05be172c, int force=0) Line 65 + 0x2d bytes C python27_d.dll!_PyBuiltin_Init() Line 2680 + 0x2d bytes C python27_d.dll!Py_InitializeEx(int install_sigs=1) Line 214 + 0x5 bytes C python27_d.dll!Py_Initialize() Line 377 + 0x7 bytes C pySim_plugd.dll!PySimProcessor::PySimProcessor() Line 73 + 0x8 bytes C++ Attempted solutions: Tried adding call to Py_Initialize() from main() - Call succeeded, but no effect on module. Tried moving call to Py_Initialize() from main() - Python code fails to execute. Tried duplicating same code in different application - succeeded. =( Thanks for reading!
participants (1)
-
The Novice Coder