Seite 1 von 1

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

Verfasst: 17. Oktober 2005 11:42
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

Verfasst: 17. Oktober 2005 13:21
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.

Verfasst: 17. Oktober 2005 13:56
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 ;-)

Verfasst: 17. Oktober 2005 14:09
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:)

Verfasst: 17. Oktober 2005 21:25
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.

Verfasst: 17. Oktober 2005 22:22
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.:(

Verfasst: 18. Oktober 2005 16:35
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

Verfasst: 18. Oktober 2005 17:13
von BartSimpson
ok ich werde es mal versuchen

Verfasst: 18. Oktober 2005 19:15
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:)

Verfasst: 18. Oktober 2005 20:30
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)

Verfasst: 18. Oktober 2005 20:35
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

Verfasst: 19. Oktober 2005 21:29
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)

Zusammenfassung

Verfasst: 24. Oktober 2005 13:52
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.