[gelöst] qglobal.h:978: error: Deklaration deklariert nichts

Alles rund um die Programmierung mit Qt
Antworten
Vrenn
Beiträge: 28
Registriert: 17. Oktober 2005 10:16

[gelöst] qglobal.h:978: error: Deklaration deklariert nichts

Beitrag von Vrenn »

Hallo

Ich bin etwas neu in qt.
Mein Problem ist ein kleines neu erstelltes Programm mit Qt 3.3.4-r8 und dcmtk 3.5.3.
Ein make gibt mir folgende Fehlermeldung auf die für mich ein Rätsel ist:

Code: Alles auswählen

g++ -c -pipe -Wall -W -march=pentium4 -O2 -pipe  -DHAVE_CONFIG_H -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT -I/usr/qt/3/mkspecs/linux-g++ -I. -I/usr/local/dicom/include -I. -I/usr/local/dicom/include/dcmdata -I/usr/local/dicom/include/dcmimage -I/usr/local/dicom/include/dcmimgle -I/usr/local/dicom/include/dcmjpeg -I/usr/local/dicom/include/dcmnet -I/usr/local/dicom/include/dcmpstat -I/usr/local/dicom/include/dcmsign -I/usr/local/dicom/include/dcmsr -I/usr/local/dicom/include/dcmwlm -I/usr/local/dicom/include/imagedb -I/usr/local/dicom/include/ofstd -I/usr/local/dicom/etc -I/usr/qt/3/include -o main.o main.cc
g++ -c -pipe -Wall -W -march=pentium4 -O2 -pipe  -DHAVE_CONFIG_H -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT -I/usr/qt/3/mkspecs/linux-g++ -I. -I/usr/local/dicom/include -I. -I/usr/local/dicom/include/dcmdata -I/usr/local/dicom/include/dcmimage -I/usr/local/dicom/include/dcmimgle -I/usr/local/dicom/include/dcmjpeg -I/usr/local/dicom/include/dcmnet -I/usr/local/dicom/include/dcmpstat -I/usr/local/dicom/include/dcmsign -I/usr/local/dicom/include/dcmsr -I/usr/local/dicom/include/dcmwlm -I/usr/local/dicom/include/imagedb -I/usr/local/dicom/include/ofstd -I/usr/local/dicom/etc -I/usr/qt/3/include -o mydicom.o mydicom.cc
In file included from /usr/qt/3/include/qobjectdefs.h:42,
                 from /usr/qt/3/include/qwindowdefs.h:43,
                 from /usr/qt/3/include/qwidget.h:42,
                 from /usr/qt/3/include/qframe.h:42,
                 from /usr/qt/3/include/qpopupmenu.h:42,
                 from /usr/qt/3/include/qmenubar.h:42,
                 from mydicom.h:18,
                 from mydicom.cc:12:
/usr/qt/3/include/qglobal.h:978: error: Deklaration deklariert nichts
make: *** [mydicom.o] Fehler 1
Hat jemand einen Tipp zur näheren Fehlerdiagnose?
Danke für jede Hilfe.

System: Gentoo Linux P4 32bit. gcc 3.3.6
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

-r8 das klingt wie eine Versuchsversion von Qt.
Aber kannst ja mal den Kode veröffentlichen. Eventuell hast du ja auch da ein Fehler.
Vrenn
Beiträge: 28
Registriert: 17. Oktober 2005 10:16

Beitrag von Vrenn »

Danke für die Antwort.

Das -r8 ist Gentoo-Linux intern. Es ist die achte Version des Installationspakets (wie rpm bei SuSE/Redhat). qt sollte exakt 3.3.4 entsprechen.

Das Programm, obwohl ich mich nicht für eine Lizenz entschieden habe (da ich mich hierbei noch nicht so auskenne, nehme an bei Qt-GPL) ist eh eher ein (hoffentlich ausbaubarer) Versuch ob qt und dcmtk miteinander wollen. Nehmt bitte Rücksicht auf mich, so viel c++ habe ich noch nicht intus ;-)
Dateianhänge
myDicom.zip
Danke für alle die sich den Code antun.
(20.28 KiB) 138-mal heruntergeladen
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Den 1. fehler habe ich schon gefunden.
mydicom.h:
#define MYDICOM_H_ muss ganz nach oben unter #ifndef MYDICOM_H_
und von einer HBox ableiten das düfte auch nicht gut sein. Es sollte ehr von QDialog oder QMainWidget sein
patientInformation.h:
#define INFORMATION_H_ siehe oben:)
Vrenn
Beiträge: 28
Registriert: 17. Oktober 2005 10:16

Beitrag von Vrenn »

Danke für den Tipp, das #define INFORMATION_H_ oben ist anscheinend eine gute Gewohnheit. Doch die Fehlermeldung bleibt leider.
QHbox wurde mir für den Anfang empfohlen, z.B. vom Magazin Linux-user bzw. den QT-Tutorial. Später würde ich gerne QSplitter verwenden, sollte mal ein dcmtk-Bild überhaupt angezeigt werden.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Es muss oben sein, da es sonst nutzlos ist. Da leider die anderen Biblitheken nicht da sind, kann ich leider es nicht versuchen zu übersetzen.:(
Vrenn
Beiträge: 28
Registriert: 17. Oktober 2005 10:16

Beitrag von Vrenn »

Die Bibliotheken gibt es unter dem dcmtk Link.
Anscheinend hatte vor mehr als einem Jahr auch jemand das Problem, als er zu dcmtk qt hinzufügte. Eine Lösung hinterließ er nicht.
http://lists.trolltech.com/qt-interest/ ... 499-0.html
http://dicom.offis.de/dcmtk.php.en
Wer es probieren will: es installiert sich in /usr/local siehe Building UNIX
http://support.dcmtk.org/docs/file_install.html
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

ok ich werde es mal versuchen
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

So nach dem ich das ganze erst mal naxh Qt4 umgeschrieben habe geht es. Bis auf 2 Sachen. Da warte noch nicht fertig. Diese habe ich auskommentert:)
Anbei die sache:)
Vrenn
Beiträge: 28
Registriert: 17. Oktober 2005 10:16

Beitrag von Vrenn »

Danke für die Mühe. Sehr gut, dass es (dcmtk+qt) überhaupt geht (jetzt einmal voraussetzend, dass der Bild-buffer kompatibel ist).
Ich werde mir die Codeänderungen einmal durchsehen und hoffe, dass es daran liegt (ich also meine qt3-kompatible Version umschreiben kann). Sollte dcmtk nur mit qt4 wollen, wirds ein Problem für mich:
Es ist für Gentoo noch nicht verfügbar (ich schätze einmal erst mit kde4, was sein Jährchen dauern wird) und jetzt habe ich schon Monate gebraucht mich in qt3 zurechtzufinden... Wenn ich qt 3 und 4 paralell installiere fürchte ich, dass portage (das Installationssystem von Gentoo) sich bei den Versionen verhaschpeln wird, da bei diesem Linux alles, vom Kernel bis zur Zwischenablage durch den gcc gejagt wird. :-(
Wie ist deine/eure Meinung dazu?

Danke auf jeden Fall für deine Hilfe, irgendwie werde ichs schon hinbiegen (jetzt auf 3 oder wie auch immer 4)
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Ich habe auch beides laufen das ist kein Problem. du must nur vor dem compilieren einmal unset QTDIR aufrufen und das richtige qmake aufrufen dann klappt es auch mit dem Nachbarn:) Ich benuzte FC3/4
Vrenn
Beiträge: 28
Registriert: 17. Oktober 2005 10:16

Beitrag von Vrenn »

Danke, ich werde es mit QT4 probieren. Ein Freund hatte mir geraten, eine Variable zu undefinen, bzw. die dcmtk-header hinter den qt-headern zu includen. Ersteres hat nicht geklappt, da ich nicht weiß bei welchem define sich qt und dcmtk uneins sind, und letzteres nicht weil dcmtk komplett aus dem Tritt kam.
du must nur vor dem compilieren einmal unset QTDIR aufrufen und das richtige qmake aufrufen
Gut, geht vielleicht bei Fedora, nur bei Gentoo rufe ich nicht qmake auf wenn ich ein paket installiere (welches ja automatisch aus den Sourcen compiled wird). Mal schauen wie gut deren Slot-Mechianismus (mehrere Biblioteken paralell nebeneinander wie gtk 1-2) funktioniert.
Danke für deine Hilfe.
Da ich mir die erneuerten Toruntals noch einmal geben werde wird Neues auf sich warten lassen, werde euch aber hoffentlich hier am laufenden halten (vorallem das mit dem framebuffer wird interessant)
Vrenn
Beiträge: 28
Registriert: 17. Oktober 2005 10:16

Zusammenfassung

Beitrag von Vrenn »

Als erstes einmal danke, dieses Problem ist gelöst.

Als Zusammenfassung:
Problem: Die Bibliotheken DICOM dcmtk-3.5.3 und das QT-3 Framework lassen sich nicht miteinander compilen.
Lösung: dcmtk-3.5.3 und das QT-4 wollen miteinander.
Vermutung: Eine #define-Überschneidung.

Bilder werden immer noch nicht geladen, was aber an meinem Code liegen wird, ist ja noch recht experimentell.
QT3 und 4 vertragen sich paralell auf Gentoo recht gut, dank dem Slotten wird das richtige qmake und qt4 aufgerufen. Die Entwickler sind bemüht, dass alle Ebuilds (Pakete) sich das richtige QT herauspicken.

Vielen dank BartSimpson, werde mich jetzt reinknien.
Antworten