[PyQt] build error with pyqt 4.4

Erick Tryzelaar idadesub at users.sourceforge.net
Tue May 13 18:55:15 BST 2008


It looks like a change in between this release and
4.4-snapshot-20080508_0 broke my build. Here's the error:

g++ -c -pipe -Os -Wall -W -fPIC
-DPYTHON_LIB=\"Python.framework/Versions/2.4/Python\" -DQT_NO_DEBUG
-DQT_PLUGIN -DQT_SCRIPT_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB
-DQDESIGNER_EXPORT_WIDGETS -DQT_SHARED
-I/opt/local/share/qt4-mac/mkspecs/macx-g++ -I.
-I/opt/local/Library/Frameworks/QtDesigner.framework/Versions/4/Headers
-I/opt/local/include/qt4-mac/QtDesigner
-I/opt/local/Library/Frameworks/QtCore.framework/Versions/4/Headers
-I/opt/local/include/qt4-mac/QtCore
-I/opt/local/Library/Frameworks/QtGui.framework/Versions/4/Headers
-I/opt/local/include/qt4-mac/QtGui
-I/opt/local/Library/Frameworks/QtXml.framework/Versions/4/Headers
-I/opt/local/include/qt4-mac/QtXml
-I/opt/local/Library/Frameworks/QtScript.framework/Versions/4/Headers
-I/opt/local/include/qt4-mac/QtScript -I/opt/local/include/qt4-mac
-I/opt/local/Library/Frameworks/Python.framework/Versions/2.4/include/python2.4
-I. -I. -F/opt/local/Library/Frameworks -o pluginloader.o
pluginloader.cpp
pluginloader.cpp: In static member function 'static PyObject*
PyCustomWidgets::getModuleAttr(const char*, const char*)':
pluginloader.cpp:284: error: invalid conversion from 'const char*' to 'char*'
pluginloader.cpp:284: error:   initializing argument 1 of 'PyObject*
PyImport_ImportModule(char*)'
pluginloader.cpp:296: error: invalid conversion from 'const char*' to 'char*'
pluginloader.cpp:296: error:   initializing argument 2 of 'PyObject*
PyObject_GetAttrString(PyObject*, char*)'
make[1]: *** [pluginloader.o] Error 1
make: *** [all] Error 2


Looking at a diff, it looks like this was a recent addition:

-PyObject *PyCustomWidgets::getModuleAttr(char *module, char *attr)
+PyObject *PyCustomWidgets::getModuleAttr(const char *module, const char *attr)
 {
+#if PY_VERSION_HEX >= 0x020500
     PyObject *mod = PyImport_ImportModule(module);
+#else
+    PyObject *mod = PyImport_ImportModule(const_cast<char *>(module));
+#endif

     if (!mod)
     {
         PyErr_Print();
         return 0;
     }

+#if PY_VERSION_HEX >= 0x020500
     PyObject *obj = PyObject_GetAttrString(mod, attr);
+#else
+    PyObject *obj = PyObject_GetAttrString(mod, const_cast<char *>(attr));
+#endif
+
     Py_DECREF(mod);

     if (!obj)
     {
         PyErr_Print();


I'm building this on leopard that has python 2.5 installed, but I'm
building it against python 2.4, so I think something's getting
confused somewhere.


More information about the PyQt mailing list