[PyQt] [SIP] compilation error with namespace

Kermit stef.kermit at gmail.com
Sun Feb 6 20:06:49 GMT 2011


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20110206/71a5cfdd/attachment-0001.html>


More information about the PyQt mailing list