[PyQt] [SIP] compilation error with namespace

Phil Thompson phil at riverbankcomputing.com
Sun Feb 6 22:46:20 GMT 2011


On Sun, 6 Feb 2011 21:06:49 +0100, Kermit <stef.kermit at gmail.com> wrote:
> hi,
> 
> i've a problem with a simple Sip compilation ( and my first tentative )
> 
> a simple class:
> 
> //__________________________________
> #ifndef Vector_h__
> #define Vector_h__
> 
> namespace KitCG
> {
> 
> class Vec2
> {
> public:
> //-------------------
> // Access to elements
> //-------------------
> 
> float x;
> float y;
> 
>  //-------------
> // Constructors
> //-------------
> 
> Vec2 ();                        // no initialization
> explicit Vec2 (float a);            // (a a)
> Vec2 (float a, float b);                // (a b)
> 
> };
> 
> Vec2::Vec2 ()
> {
> // empty
> }
> 
> 
> 
> Vec2::Vec2 (float a)
> {
> x = y = a;
> }
> 
> 
> 
> Vec2::Vec2 (float a, float b)
> {
> x = a;
> y = b;
> }
> }
> 
> #endif // Vector_h__
> 
> //__________________________________
> 
> 
> the corresponding Vector.sip
> 
> //_________________________________________________
> %Module Vec2 0
> 
> class Vec2
> {
> %TypeHeaderCode
> #include "Vector.h"
> %End
> 
> 
> public:
> 
> float x;
> float y;
> 
> Vec2 ();                        // no initialization
> explicit Vec2 (float a);            // (a a)
> Vec2 (float a, float b);                // (a b)
> 
> 
> };
> //_________________________________________________
> 
> My configure.py
> //_________________________________________________
> import os
> import sipconfig
> from PyQt4 import pyqtconfig
> 
> moduleName= "Vector"
> build_file = moduleName+".sbf"
> 
> config = pyqtconfig.Configuration()
> 
> qt_sip_flags = config.pyqt_sip_flags
> 
> print " ".join([config.sip_bin, "-c", ".", "-b", build_file,
> moduleName+".sip"])
> 
> os.system(" ".join([config.sip_bin, "-c", ".", "-b", build_file,
> moduleName+".sip"]))
> 
> installs = []
> 
> installs.append([moduleName+".sip",
> os.path.join(config.default_sip_dir, moduleName)])
> 
> makefile = pyqtconfig.QtCoreModuleMakefile(
>      configuration=config,
>          build_file=build_file,
>          installs=installs
>      )
> 
> makefile.extra_libs = [moduleName]
> 
> makefile.generate
> 
> //_________________________________________
> 
> and i've this error
> 
> 
>         cl -c
>
-***************************************************************************
> sipVec2Vec2.cpp
> .\sipVec2Vec2.cpp(30) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(37) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(44) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(51) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(68) : error C2065: 'Vec2' : undeclared identifier
> .\sipVec2Vec2.cpp(68) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(73) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(73) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(75) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(84) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(84) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(86) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(96) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(96) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(98) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(103) : error C4430: missing type specifier - int
assumed.
> Note: C++ does not support default-int
> .\sipVec2Vec2.cpp(103) : error C2143: syntax error : missing ';' before
'*'
> .\sipVec2Vec2.cpp(103) : error C2065: 'a0' : undeclared identifier
> .\sipVec2Vec2.cpp(105) : error C2065: 'a0' : undeclared identifier
> .\sipVec2Vec2.cpp(107) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(107) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(109) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(121) : error C2065: 'Vec2' : undeclared identifier
> .\sipVec2Vec2.cpp(121) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(121) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(123) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(123) : error C2227: left of '->x' must point to
> class/struct/union/generic type type is ''unknown-type''
> .\sipVec2Vec2.cpp(133) : error C2065: 'Vec2' : undeclared identifier
> .\sipVec2Vec2.cpp(133) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(133) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(140) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(140) : error C2227: left of '->x' must point to
> class/struct/union/generic typetype is ''unknown-type''
> .\sipVec2Vec2.cpp(150) : error C2065: 'Vec2' : undeclared identifier
> .\sipVec2Vec2.cpp(150) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(150) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(152) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(152) : error C2227: left of '->y' must point to
> class/struct/union/generic type type is ''unknown-type''
> .\sipVec2Vec2.cpp(162) : error C2065: 'Vec2' : undeclared identifier
> .\sipVec2Vec2.cpp(162) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(162) : error C2061: syntax error : identifier 'Vec2'
> .\sipVec2Vec2.cpp(169) : error C2065: 'sipCpp' : undeclared identifier
> .\sipVec2Vec2.cpp(169) : error C2227: left of '->y' must point to
> class/struct/union/generic type    type is ''unknown-type''
> 
> 
> 
> i know my problem is with the namespace, because without this, all is
fine
> i can compile and the python test is ok
> 
> could you explain me please, i don't understand why
> 
> thx for your help
> 
> Kermit

You have to put the namespace definition in your .sip file as well.

Phil


More information about the PyQt mailing list