Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: izoomer от Июль 11, 2007, 17:07



Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: izoomer от Июль 11, 2007, 17:07
Есть такие заголовочные файлы

JCachRegister.h

Код:


#ifndef JCASHREGISTER_H
#define JCASHREGISTER_H

#include <QWidget>
#include <math.h>
#include <QDebug>
#include <QFont>
#include <QPainter>
#include <QLabel>
#include "JConfigModel.h"
#include "JDeviceDispatcher.h"

...
...
...


JMPEGWidget.h

Код:

#ifndef JMPEGWIDGET_H
#define JMPEGWIDGET_H

#include <QWidget>
#include <QMouseEvent>
extern "C" {
    #include "Xine.h"
}

...
...
...


JDeviceDispatcher.h

Код:

#ifndef JDEVICEDISPATCHER_H
#define JDEVICEDISPATCHER_H

#include <QStack>
#include <QDomDocument>
#include <QBitArray>

#include "usbDevice.h"
#include "JCashRegister.h"
#include "JBaner.h"
#include "JPlayer.h"
#include "JDialog.h"
#include "JConfigModel.h"



И собственно сам файл виновник

JPlayer.h

Код:

#ifndef JPLAYER_H
#define JPLAYER_H

#include <QWidget>
#include <QVariant>
#include <QPushButton>
#include <QModelIndex>
#include <QFileInfo>
#include <QAbstractItemModel>
#include <QStandardItem>
#include <QStandardItemModel>
#include <QList>
#include <QLabel>
#include <QPair>
#include <QDomDocument>
//#include "JMPEGWidget.h"
#include "JDeviceDispatcher.h"
#include "player.h"
#include "fileinfo_met.h"



Если строка #include "JMPEGWidget.h" закоментирована то компилится бенз проблем, если раскоментировать то вылазят такие вот вещи

Код:

/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:114: error: expected identifier before numeric constant
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:114: error: expected identifier before numeric constant
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:114: error: expected `}' before numeric constant
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:114: error: expected unqualified-id before numeric constant
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:117: error: ‘FrameFeature’ was not declared in this scope
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:117: error: template argument 1 is invalid
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:117: error: invalid type in declaration before ‘;’ token
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:120: error: expected unqualified-id before ‘)’ token
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:121: error: expected unqualified-id before ‘const’
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:121: error: expected `)' before ‘const’
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:122: error: expected unqualified-id before ‘const’
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:122: error: expected `)' before ‘const’
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:123: error: ‘QStyleOptionFrameV2& operator=(const QStyleOptionFrame&)’ must be a nonstatic member function
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:125: error: expected unqualified-id before ‘protected’
/usr/local/Trolltech/Qt-4.2.0/include/QtGui/qstyleoption.h:127: error: expected declaration before ‘}’ token


ОТКУДА ТАКОЕ МОЖЕТ БЫТЬ !!!??? Я уже заманался чиать изучать ... не пойму ... подскажите кто знает.


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: Sergeich от Июль 11, 2007, 17:53
Косяк в файле "JMPEGWidget.h", скорей всего в конце определения класса после закрывающейся фигурной скобки нет точки с запятой.


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: pastor от Июль 11, 2007, 18:02
2 Sergeich: Не факт!

2 izoomer: попробуй поиграться с перестановкой ашников местами. Допустим JMPEGWidget.h поставить после JDeviceDispatcher.h в самый низ.

ЗЫ: Я наблюдал похожие проблемы в связке Qt + Motif, когда ашникик мотифа подключались перед Qt'шными.


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: izoomer от Июль 11, 2007, 22:31
Если вставлять #include "JMPEGWidget.h" в другом файле кроме JPlayer.h то все проходит на УРА! .... то есть компилится ... а вот если именно в JPlaer.h включаем то ошибка ....

добавлено спустя 2 минуты:

 
Цитата: "Sergeich"
Косяк в файле "JMPEGWidget.h", скорей всего в конце определения класса после закрывающейся фигурной скобки нет точки с запятой.

естьтам точка с запяой ... в том то и прикол

добавлено спустя 8 минут:

 пробовал вставлять после каждого ашника в JPlayer.h таже ошибка ... хотя и ошибкой трудно назвать ... глюк скорее всего ... а как побороть не знаю ... вот ведь бывает ...

добавлено спустя 5 минут:

 причем ругается то при компиляци JCashRegister.cpp .... то есть если в любом месте JPlayer.h вставить #include"JMPEGWi7dget.h" То при компилиции ругается на JCashRegister.h .... ну не странно ли ... ?

добавлено спустя 2 минуты:

 ПОМОГИТЕ !!!!!


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: Racheengel от Июль 11, 2007, 22:58
вот это что такое?

extern "C" {
    #include "Xine.h"
}


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: vaprele07 от Июль 12, 2007, 06:02
Вот так делать не хорошо:
JCachRegister.h
...
#include "JDeviceDispatcher.h"

JDeviceDispatcher.h
...
#include "JCashRegister.h"

если нужно что то с JDeviceDispatcher.h то делай это в таком виде:

JCachRegister.h
...
class JDeviceDispatcher;

JCachRegister.cpp

#include JCachRegister.h
#include JDeviceDispatcher.h

Цитата: "Racheengel"
вот это что такое?

extern "C" {
    #include "Xine.h"
}


а это? :roll:

extern "Pascal" {}


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: Racheengel от Июль 12, 2007, 09:22
я к тому, что может там надо ; в конец поставить?


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: Steven_Orko от Июль 12, 2007, 09:23
Цитата: "Racheengel"
вот это что такое?

extern "C" {
    #include "Xine.h"
}


Грубо говоря, это запрещает g++ уродовать названия функций, добавляя к этому названию зашифрованную сигнатуру, т.е. компилятор оставляет имя функции, как оно есть. Зачем это здесь, не ясно. Обычно используется при написании библиотек shared library на C++ для C++ или C.


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: kitov от Июль 12, 2007, 10:13
попробуй кутешные хедеры в самом конце заинклюдить .


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: izoomer от Июль 12, 2007, 11:42
Цитата: "vaprele07"

если нужно что то с JDeviceDispatcher.h то делай это в таком виде:

JCachRegister.h
...
class JDeviceDispatcher;

JCachRegister.cpp

#include JCachRegister.h
#include JDeviceDispatcher.h


Спасибо. Так работает .... надо бы мне азы С++ почитать


Название: [Qt-4.2.0 Linux FC6 ]вообще нопонятка с компиляцией
Отправлено: Racheengel от Июль 12, 2007, 22:19
тут не в С++ дело, а в компиляторе.