[python] Errors on build Boost.Python with ICL 8.1

Hello, all. I have encountered compile errors on attempt to add Python support to an existing boost installation. Configuration: boost 1.33.1 Intel C++ Compiler 8.1.018 for Windows Python 2.5 // --------Build script (icc_python.bat): ------------- SET INTEL_BASE_MSVC_TOOLSET=vc-7_1 SET TOOLS=intel-win32 SET INTEL_PATH=c:\Install\Intel\CPP\Compiler80\Ia32 SET INTEL_VERSION=81 SET PYTHON_VERSION= 2.5 SET PYTHON_ROOT=C:\Install\Python25 bjam --prefix=C:\prg\boost --with-python install 1>icc_python.log 2>icc_python.err //----- end of build script --------- The following errors occur: C:\prg\boost_1_33_1\boost/python/converter/pyobject_traits.hpp(33): error: expression must have a constant value BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Type); ^ detected during instantiation of class "boost::python::converter::pyobject_traits<PyTypeObject>" at line 33 C:\prg\boost_1_33_1\boost/python/converter/pyobject_traits.hpp(34): error: expression must have a constant value BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(List); ^ detected during instantiation of class "boost::python::converter::pyobject_traits<PyListObject>" at line 34 C:\prg\boost_1_33_1\boost/python/converter/pyobject_traits.hpp(35): error: expression must have a constant value BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Int); ^ detected during instantiation of class "boost::python::converter::pyobject_traits<PyIntObject>" at line 35 ..................... and so on .......... I've made some investigation of the issue. The error occur in file pyobject_traits.hpp in this code: # define BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(T) \ template <> struct pyobject_traits<Py##T##Object> \ : pyobject_type<Py##T##Object, &Py##T##_Type> {} // This is not an exhaustive list; should be expanded. BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Type); //line 33 BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(List); //line 34 BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Int); //line 35 BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Long); BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Dict); BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Tuple); Variables PyType_Type, PyList_Type, PyInt_Type and etc has type PyTypeObject and defined in Python include files in the following way: PyAPI_DATA(PyTypeObject) PyList_Type; PyAPI_DATA is a macro. In this case it unrolls in the code: extern __declspec(dllimport) PyTypeObject PyList_Type; So we have the following code after preprocessing: extern __declspec(dllimport) PyTypeObject PyList_Type; template <> struct pyobject_traits<PyListObject> : pyobject_type<PyListObject, &PyList_Type> {}; and it causes error: expression must have a constant value I tried to explicitly change PyList_Type declaration to: extern __declspec(dllimport) const PyTypeObject PyList_Type; but it didn't change anything. Google didn't tell me anything useful so this list is my last resort. Please, help. Best regards, Ded Mazay.
participants (1)
-
Mazay