> 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? Thanks! _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt