On 07.07.2013, 13:46:02 br...@stottlemyer.com wrote: >> On Sat, 6 Jul 2013 07:30:43 -0700, br...@stottlemyer.com wrote: >>> Hi Phil, >>> >>> I am trying to see if SIP will help me with a task I'm trying to solve. >> I >>> started out by trying the More Complex C++ Example in the docs. >> However, >>> I'm using Qt5, and the example is for Qt4. >>> >>> I see the pyqtconfig is part of Qt4, but not Qt5. No problem, except >>> pyqtconfig is pretty integrated into the example, and as a beginner, I'm >>> not sure how to take pyqtconfig out. >>> >>> Is there a Qt5 example for SIP? >> >> Look at the configure.py for PyQt5. A minimal build system would just be a >> shell script that invoked sip then the C++ compiler then the linker. The >> only thing you need to consider is to use the right -t flags to sip and >> these can be found by introspecting current versions of PyQt. >> >> Phil >>
> Thanks for the pointers. I've got the example working. But now I'm > having trouble extending the example. > I've got a bunch of enums I need to make available, some of which have > overlapping names. I've been handling this by putting them in different > namespaces. But sip is complaining about that. I saw an old mailing list > question on the topic > (http://www.riverbankcomputing.com/pipermail/pyqt/2007-August/016847.html), > but no solution was posted. > My .h file is: > // Define the interface to the hello library. > #include <qlabel.h> > #include <qwidget.h> > #include <qstring.h> > #if defined HELLO_DLL > # define HELLO_DLLSPEC Q_DECL_EXPORT > #else > # define HELLO_DLLSPEC Q_DECL_IMPORT > #endif > namespace MyNamespace { enum MyEnum { No=0, Yes=1}; }; > class HELLO_DLLSPEC Hello : public QLabel { > // This is needed by the Qt Meta-Object Compiler. > Q_OBJECT > public: > Hello(QWidget *parent = 0); > private: > // Prevent instances from being copied. > Hello(const Hello &); > Hello &operator=(const Hello &); > }; > #if !defined(Q_OS_WIN) > void setDefault(const QString &def); > #endif > My .sip file is: > // Define the SIP wrapper to the hello library. > %Module hello > %Import QtGui/QtGuimod.sip > %Import QtWidgets/QtWidgetsmod.sip > %If (Qt_5_0_0 -) > namespace MyNamespace > { > %TypeHeaderCode > #include <hello.h> > %End > enum MyEnum { No=0, Yes=1}; > }; > class Hello : public QLabel { > %TypeHeaderCode > #include <hello.h> > %End > public: > Hello(QWidget *parent /TransferThis/ = 0); > private: > Hello(const Hello &); > }; > %If (!WS_WIN) > void setDefault(const QString &def); > %End > %End > The compiler (linker, actually) is complaining about missing symbols: > Creating library release\hello.lib and object release\hello.exp > siphellocmodule.obj : error LNK2001: unresolved external symbol "struct > _pyqt4ClassTypeDef sipTypeDef_hello_MyNamespace" > (?sipTypeDef_hello_MyNamespace@@3U_pyqt4ClassTypeDef@@A) > release\hello.dll : fatal error LNK1120: 1 unresolved externals > What's the proper way to describe this to sip? Hi, Are you really compiling and linking all C++ files generated by SIP? Best Regards, Mathias Born _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt