PDA

View Full Version : Error regarding QString



Namrata
22nd October 2007, 08:01
Hi,

I am new in Qt. I have wriiten small program in c++ using vi editor in which I included '/usr/lib/qt-3.1/include/qstring.h' and used 'QString' data type. But while compling I m getting error as:

In file included from /usr/lib/qt-3.1/include/qshared.h:42,
from /usr/lib/qt-3.1/include/qgarray.h:42,
from /usr/lib/qt-3.1/include/qmemarray.h:42,
from /usr/lib/qt-3.1/include/qcstring.h:43,
from /usr/lib/qt-3.1/include/qstring.h:42,
from DCSPacket.h:5,
from DCSPacket.cpp:1:
/usr/lib/qt-3.1/include/qglobal.h:710:21: qconfig.h: No such file or directory
/usr/lib/qt-3.1/include/qglobal.h:773:23: qfeatures.h: No such file or directory




Please help to solve this error.

wysota
22nd October 2007, 08:13
Could we see the code? Did you use qmake to compile your application?

Namrata
22nd October 2007, 08:26
Thanks for replying !
I used "g++ DCSPacket.cpp" for compling.

Here is the code :



In 'DCSPacket.h ':

#ifndef DCSPacket_H
#define DCSPacket_H
#include<stdlib.h>
#include<sys/types.h>
#include </usr/lib/qt-3.1/include/qstring.h>
#include<fcntl.h>
#include<unistd.h>
#include<iostream.h>
#include<strstream.h>
#include<sys/dir.h>
#include<time.h>
class DCSPacket
{
public:
DCSPacket();
~DCSPacket();

//Member variables. Total 144 bytes
QString DCSPkt1; // 1 byte
long DCSPkt2; // 4 bytes
long DCSPkt3; // 1 byte
long DCSPkt4; // 4 bytes
long DCSPkt5; // 3 bytes
long DCSPkt6; // 3 bytes
QString DCSPkt7; // 125 bytes
long DCSPkt8; // 2 bytes
QString DCSPkt9; // 1 byte

void GenSmsPkt(int);
void ExtSmsPkt(QString);
};
#endif



In 'DCSPacket.cpp' :


#include "DCSPacket.h"

extern QString packet;

DCSPacket::DCSPacket(){}

DCSPacket::~DCSPacket(){}

void DCSPacket::GenSmsPkt(int ptno)
{
DCSPkt1="{";
DCSPkt2=ptno;
DCSPkt3=1;
DCSPkt4=1;
DCSPkt5=144;
DCSPkt6=1;
int fd;
fd=open("/root/sms/"+ptno,O_RDONLY);
char buff[125];
read(fd,buff,sizeof(buff));
DCSPkt7=buff;
DCSPkt8=12;
DCSPkt9="}";
packet.sprintf("%s%d%d%d%d%d%s%d%s","{",DCSPkt2,DCSPkt3,DCSPkt4,DCSPkt5,DCSPkt6,buff,DCSP kt8,"}");
}

void DCSPacket::ExtSmsPkt(QString inBuffer)
{
DCSPkt1=(inBuffer.mid(1,1));
DCSPkt2=(inBuffer.mid(2,4)).toInt();
DCSPkt3=(inBuffer.mid(6,1)).toInt();
DCSPkt4=(inBuffer.mid(7,4)).toInt();
DCSPkt5=(inBuffer.mid(11,3)).toInt();
DCSPkt6=(inBuffer.mid(14,3)).toInt();
DCSPkt7=(inBuffer.mid(17,125));
DCSPkt8=(inBuffer.mid(143,2)).toInt();
DCSPkt9=(inBuffer.mid(145,1));

//To Make Directory
int stat;
stat=mkdir("/root/sms/"+DCSPkt2,0666);
if(stat!=0)
cout<<"Directory could not be created";

//To create timestamp
long t;
struct tm *tp;
time(&t);
tp=localtime(&t);
int mon=tp->tm_mon+1;
int year=tp->tm_year+1900;
QString timestamp;
timestamp.sprintf("%d-%d-%d %d:%d:%d",tp->tm_mday,mon,year,tp->tm_hour,tp->tm_min,tp->tm_sec);
//system("date '+%c %N'");

//Store data in File
int fd;
fd=open("/root/sms/"+timestamp,O_WRONLY|O_CREAT,0666);
write(fd,DCSPkt7,sizeof(DCSPkt7));

}



In 'main.cpp' :

#include "DCSPacket.h"

QString packet;

int main()
{
QString buffer ="{1111211441 abcdefghijklmnopqrstuvwxyz abcdefgijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefgijklmnopqrstuvwxyz abcdefghijklmnopq12}";
DCSPacket *objExPkt=new DCSPacket();
objExPkt->ExtSmsPkt(buffer);

DCSPacket *objGenPkt=new DCSPacket();
objGenPkt->GenSmsPkt(1111);

cout<<packet;
return 0;
}

Whether I should use qmake to complile ? then please tell how to use it.
To use qmake, is it required Qt installed?

wysota
22nd October 2007, 09:00
You need to use qmake. It's installed with Qt. See the docs: http://doc.trolltech.com/3.3/qmake-manual.html