QT Beispiel, Error
-
ok,
kannst du dieses example bitte compilieren?
findest du unter:
...\examples\mainwindows\applicationoder auch hier:
http://doc.trolltech.com/4.0/mainwindows-application.htmlsag mir ob du auch diese error bekommst!?
MFG
-
Das Kompilieren ist ja nicht das Problem:
- (nicht notwendig aber bequemer) füg das Dev-Cpp\bin-Verzeichnis der PATH-Variabel deines Systems hinzu
- Wechsel ins Verzeichnis "examples/mainwindows/application"
- Führe dort "qmake application.pro" aus
- Führ dann "make -f Makefile" aus
- Jetzt findest du in "examples/mainwindows/application/release" dein fertiges ProgrammAlles was man machen muss, ist also qmake und make.
Du kannst es auch in Dev-Cpp einbinden:
"Project Options/Makefile/Use custom Makefile" und dort die von qmake erstellte Makefile auswählen. Erzeugt zwar einige Fehlermeldungen beim Kompilieren, aber ein Blick in /release zeigt, dass er es trotzdem kompilieren konnte ...
Dev-Cpp macht da irgendwelche komischen Sachen beim Aufruf von make (siehe Compile Log), die mir zu doof zum Anschauen sind *g*
-
tja...wie kann ich dem dev-cpp sagen mach zuerst moc vom header file, die moc datei soll dann heissen: #include "mainwindow.moc"
hast du eigentlich eine vorlage für ein QT projekt...zeig doch mal!
MFG
-
ich hab nun ein makefile geschrieben bzw. abgeändert, und das klappt super ohne errors...
wie kann ich nun eine vorlage machen...und sagen benutze dieses makefile...das wär noch schön, wenn sowas ginge...!?MFG
makefile:
# Project: Projekt1 # Makefile created by Dev-C++ 4.9.9.2 CPP = g++.exe CC = gcc.exe MOC = moc.exe WINDRES = windres.exe RES = OBJ = moc_mainwindow.o mainwindow.o main.o $(RES) LINKOBJ = main.o mainwindow.o $(RES) LIBS = -L"lib" -L"C:/Qt4.0.0/lib" -L"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/lib" -mwindows Qt4.0.0/lib/libQt3Support4.a Qt4.0.0/lib/libQtAssistantClient.a Qt4.0.0/lib/libQtCore4.a Qt4.0.0/lib/libQtDesigner4.a Qt4.0.0/lib/libQtDesignerComponents4.a Qt4.0.0/lib/libQtGui4.a Qt4.0.0/lib/libqtmain.a Qt4.0.0/lib/libQtNetwork4.a Qt4.0.0/lib/libQtOpenGL4.a Qt4.0.0/lib/libQtSql4.a Qt4.0.0/lib/libQtXml4.a INCS = -I"include" CXXINCS = -I"lib/gcc/mingw32/3.4.2/include" -I"include/c++/3.4.2/backward" -I"include/c++/3.4.2/mingw32" -I"include/c++/3.4.2" -I"include" -I"C:/Qt4.0.0/include" -I"C:/Qt4.0.0/include/ActiveQt" -I"C:/Qt4.0.0/include/Qt" -I"C:/Qt4.0.0/include/Qt3Support" -I"C:/Qt4.0.0/include/QtAssistant" -I"C:/Qt4.0.0/include/QtCore" -I"C:/Qt4.0.0/include/QtDesigner" -I"C:/Qt4.0.0/include/QtGui" -I"C:/Qt4.0.0/include/QtMotif" -I"C:/Qt4.0.0/include/QtNetwork" -I"C:/Qt4.0.0/include/QtNsPlugin" -I"C:/Qt4.0.0/include/QtOpenGL" -I"C:/Qt4.0.0/include/QtOpenGL" -I"C:/Qt4.0.0/include/QtSql" -I"C:/Qt4.0.0/include/QtXml" -I"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/include" -I"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/lib/wx/include/msw-ansi-release-static-2.6" BIN = Projekt1.exe CXXFLAGS = $(CXXINCS) CFLAGS = $(INCS) RM = rm -f .PHONY: all all-before all-after clean clean-custom all: all-before Projekt1.exe all-after clean: clean-custom ${RM} $(OBJ) $(BIN) $(BIN): $(OBJ) $(CPP) $(LINKOBJ) -o "Projekt1.exe" $(LIBS) main.o: main.cpp $(CPP) -c main.cpp -o main.o $(CXXFLAGS) mainwindow.o: mainwindow.cpp $(CPP) -c mainwindow.cpp -o mainwindow.o $(CXXFLAGS) moc_mainwindow.o: moc_mainwindow.cpp mainwindow.h $(CPP) -c moc_mainwindow.cpp -o moc_mainwindow.o $(CXXFLAGS) moc_mainwindow.cpp: mainwindow.cpp $(MOC) mainwindow.h -o moc_mainwindow.cpp $(CXXFLAGS)
-
Hi,
Ich hab gerade den Thread gelesen und bin auch an der Stelle, wo man moc in DevCpp integrieren möchte. Da es leider keinen Custom Build Step gibt, sieht meine Lösung dabei wie folgt aus:
Zum Nachmachen: Tutorial 7 wurde benutzt
Zunächst mal muß man dem Projekt ein dummy-moc hinzufügen. In meinem Fall ist die Klasse LCDRange betroffen (lcdrange.cpp bzw h). Ich habe also eine Datei namens "moc_lcdrange.cpp" hinzugefügt. Da DevCpp keine unbekannten Dateien akzeptiert, ist es blöderweise erforderlich, eine neue Datei anzulegen und diese zu speichern (Inhalt ist egal, der wird später eh überschrieben).
Nun geht man in die Projekt Optionen, wählt das Tab "Dateien" und das hinzugefügte dummy-moc aus. Dort aktiviert man die Option "Überschreibe Build Kommando". Oberhalb des eigentlichen Kompileraufrufs schreibt man nun "moc lcdrange.h -o moc_lcdrange.cpp", sodaß vor dem kompilieren dieser jenigen Datei sie zunächst mal erzeugt wird.
Das wars eigentlich schon, das Projekt neu compilieren und es sollte gehen.
Eventuell kann man auch ein dummy Sourcefile erzeugen, welches man prioritätstechnisch zuerst kompiliert, was aber überhaupt keinen Kompileraufruf enthält, sondern nur das/die moc(s) erzeugt.
Gruß
Michael
-
". Oberhalb des eigentlichen Kompileraufrufs schreibt man nun "moc lcdrange.h -o moc_lcdrange.cpp", sodaß vor dem kompilieren dieser jenigen Datei sie zunächst mal erzeugt wird.
wo oberhalb?
-
Also ich mache nur jedesmal, wenn ich eine neue Klasse habe, die moc-Files
braucht ein[n]make mocables
Dadurch werden die noch nötigen Dateien generiert und ich kann sie meiner IDE
hinzufügen.
-
wo oberhalb?
Oberhalb heißt, eine Zeile über dem Kompileraufruf (der ja normalerweise alleine in der obersten Zeile lokalisiert ist), zeitlich gesehen also direkt davor
-
einstellungen für das dummy-moc file:
In Kompilation einbeziehen
Ins Linken einbeziehen
Kompiliere Datei als C++
Überschreibe Build Kommandomoc smssender.h -o moc_smssender.cpp $(CPP) -c moc_smssender.cpp -o moc_smssender.o $(CXXFLAGS)
ergebniss:
Compiler: Default compiler Building Makefile: "C:\Dokumente und Einstellungen\Gerald\Desktop\SMS Sender\Makefile.win" Führt make... aus make.exe -f "C:\Dokumente und Einstellungen\Gerald\Desktop\SMS Sender\Makefile.win" all g++.exe main.o smssender.o moc_smssender.o -o "SMS Sender.exe" -L"lib" -L"C:/Qt4.0.0/lib" -L"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/lib" -mwindows ../../../../Qt4.0.0/lib/libQt3Support4.a ../../../../Qt4.0.0/lib/libQtAssistantClient.a ../../../../Qt4.0.0/lib/libQtCore4.a ../../../../Qt4.0.0/lib/libQtDesigner4.a ../../../../Qt4.0.0/lib/libQtDesignerComponents4.a ../../../../Qt4.0.0/lib/libQtGui4.a ../../../../Qt4.0.0/lib/libqtmain.a ../../../../Qt4.0.0/lib/libQtNetwork4.a ../../../../Qt4.0.0/lib/libQtOpenGL4.a ../../../../Qt4.0.0/lib/libQtSql4.a ../../../../Qt4.0.0/lib/libQtXml4.a moc_smssender.o(.text+0x100):moc_smssender.cpp: multiple definition of `SMSSender::metaObject() const' smssender.o(.text+0x9e6):smssender.cpp: first defined here moc_smssender.o(.text+0x10a):moc_smssender.cpp: multiple definition of `SMSSender::qt_metacast(char const*)' smssender.o(.text+0x9f0):smssender.cpp: first defined here moc_smssender.o(.text+0x158):moc_smssender.cpp: multiple definition of `SMSSender::qt_metacall(QMetaObject::Call, int, void**)' smssender.o(.text+0xa3e):smssender.cpp: first defined here moc_smssender.o(.data+0x0):moc_smssender.cpp: multiple definition of `SMSSender::staticMetaObject' smssender.o(.data+0x0):smssender.cpp: first defined here collect2: ld returned 1 exit status make.exe: *** ["SMS] Error 1 Ausführung beendet
-
Compiler: Default compiler
Building Makefile: "C:\Dokumente und Einstellungen\Gerald\Desktop\SMS Sender\Makefile.win"
Führt make... aus
make.exe -f "C:\Dokumente und Einstellungen\Gerald\Desktop\SMS Sender\Makefile.win" all
g++.exe main.o smssender.o moc_smssender.o -o "SMS Sender.exe" -L"lib" -L"C:/Qt4.0.0/lib" -L"C:/Programme/Dev-Cpp/wxWidgets-2.6.1-msw-static/lib" -mwindows ../../../../Qt4.0.0/lib/libQt3Support4.a ../../../../Qt4.0.0/lib/libQtAssistantClient.a ../../../../Qt4.0.0/lib/libQtCore4.a ../../../../Qt4.0.0/lib/libQtDesigner4.a ../../../../Qt4.0.0/lib/libQtDesignerComponents4.a ../../../../Qt4.0.0/lib/libQtGui4.a ../../../../Qt4.0.0/lib/libqtmain.a ../../../../Qt4.0.0/lib/libQtNetwork4.a ../../../../Qt4.0.0/lib/libQtOpenGL4.a ../../../../Qt4.0.0/lib/libQtSql4.a ../../../../Qt4.0.0/lib/libQtXml4.amoc_smssender.o(.text+0x100):moc_smssender.cpp: multiple definition of
SMSSender::metaObject() const' smssender.o(.text+0x9e6):smssender.cpp: first defined here moc\_smssender.o(.text+0x10a):moc\_smssender.cpp: multiple definition of
SMSSender::qt_metacast(char const*)'
smssender.o(.text+0x9f0):smssender.cpp: first defined here
moc_smssender.o(.text+0x158):moc_smssender.cpp: multiple definition of `SMSSender::qt_metacall(QMetaObject::Call, int, void**)'smssender.o(.text+0xa3e):smssender.cpp: first defined here
moc_smssender.o(.data+0x0):moc_smssender.cpp: multiple definition of `SMSSender::staticMetaObject'smssender.o(.data+0x0):smssender.cpp: first defined here
collect2: ld returned 1 exit statusmake.exe: *** ["SMS] Error 1
Ausführung beendet
Sieht so aus, als wäre das moc bereits anderweitig eingebunden.
Bei mir funktioniert das so, wie beschrieben.Phiele Grüze
Sylphius
-
@sylphius
schick mir bitte mal dein projekt dann schau ich nach was ich falsch mache...
wär klasse
email: 5aht@gmx.atbye
-
@sylphius
schick mir bitte mal dein projekt dann schau ich nach was ich falsch mache...
wär klasse
email: 5aht@gmx.atist unterwegs
-
vielen dank! das funktioniert, recht ne schöne lösung!! hast du schon versucht QT4 unter visual studio 2003 zu integrieren...ich werd man in den anderen thread schauen, ob das schon jemand geschafft hat...
cu
-
Michael S schrieb:
Hi,
Ich hab gerade den Thread gelesen und bin auch an der Stelle, wo man moc in DevCpp integrieren möchte. Da es leider keinen Custom Build Step gibt, sieht meine Lösung dabei wie folgt aus:
Zum Nachmachen: Tutorial 7 wurde benutzt
Zunächst mal muß man dem Projekt ein dummy-moc hinzufügen. In meinem Fall ist die Klasse LCDRange betroffen (lcdrange.cpp bzw h). Ich habe also eine Datei namens "moc_lcdrange.cpp" hinzugefügt. Da DevCpp keine unbekannten Dateien akzeptiert, ist es blöderweise erforderlich, eine neue Datei anzulegen und diese zu speichern (Inhalt ist egal, der wird später eh überschrieben).
Nun geht man in die Projekt Optionen, wählt das Tab "Dateien" und das hinzugefügte dummy-moc aus. Dort aktiviert man die Option "Überschreibe Build Kommando". Oberhalb des eigentlichen Kompileraufrufs schreibt man nun "moc lcdrange.h -o moc_lcdrange.cpp", sodaß vor dem kompilieren dieser jenigen Datei sie zunächst mal erzeugt wird.
Das wars eigentlich schon, das Projekt neu compilieren und es sollte gehen.
Eventuell kann man auch ein dummy Sourcefile erzeugen, welches man prioritätstechnisch zuerst kompiliert, was aber überhaupt keinen Kompileraufruf enthält, sondern nur das/die moc(s) erzeugt.
Gruß
Michaelvielen dank, das klappt prima!!
-
@sylphius: kannst du das dummy makefile mal bitte posten?
cu