Visual C++ und QT
-
hi,
@smo: beide Links bringen mich auf eine 404 Fehler-Seite
@elise: für den gezeigten Quellcode fehlen mir noch einige Dateien zum kompilieren.
Die Projekteinstellungen habe ich übernommen und trotz der dort gezeigten
gezeigten Ergänzungen läuft der Linker nicht durch (ohne auch nicht). Aber aufgrund
der Änderung der Projekteinstellung sind es nur noch 13 Fehler:--------------------Konfiguration: Dienstplaner - Win32 Release-------------------- Kompilierung läuft... arbeitsfenster.cpp hauptfenster.cpp main.cpp moc_arbeitsfenster.cpp moc_hauptfenster.cpp Generieren von Code... Linker-Vorgang läuft... moc_arbeitsfenster.obj : error LNK2005: "public: virtual char const * __thiscall Arbeitsfenster::className(void)const " (?className@Arbeitsfenster@@UBEPBDXZ) bereits in arbeitsfenster.obj definiert moc_arbeitsfenster.obj : error LNK2005: "protected: virtual void __thiscall Arbeitsfenster::initMetaObject(void)" (?initMetaObject@Arbeitsfenster@@MAEXXZ) bereits in arbeitsfenster.obj definiert moc_arbeitsfenster.obj : error LNK2005: "public: static class QString __cdecl Arbeitsfenster::tr(char const *)" (?tr@Arbeitsfenster@@SA?AVQString@@PBD@Z) bereits in arbeitsfenster.obj definiert moc_arbeitsfenster.obj : error LNK2005: "public: static class QMetaObject * __cdecl Arbeitsfenster::staticMetaObject(void)" (?staticMetaObject@Arbeitsfenster@@SAPAVQMetaObject@@XZ) bereits in arbeitsfenster.obj definiert moc_arbeitsfenster.obj : error LNK2005: "private: static class QMetaObject * Arbeitsfenster::metaObj" (?metaObj@Arbeitsfenster@@0PAVQMetaObject@@A) bereits in arbeitsfenster.obj definiert moc_hauptfenster.obj : error LNK2005: "public: virtual char const * __thiscall Hauptfenster::className(void)const " (?className@Hauptfenster@@UBEPBDXZ) bereits in hauptfenster.obj definiert moc_hauptfenster.obj : error LNK2005: "protected: virtual void __thiscall Hauptfenster::initMetaObject(void)" (?initMetaObject@Hauptfenster@@MAEXXZ) bereits in hauptfenster.obj definiert moc_hauptfenster.obj : error LNK2005: "public: static class QString __cdecl Hauptfenster::tr(char const *)" (?tr@Hauptfenster@@SA?AVQString@@PBD@Z) bereits in hauptfenster.obj definiert moc_hauptfenster.obj : error LNK2005: "public: static class QMetaObject * __cdecl Hauptfenster::staticMetaObject(void)" (?staticMetaObject@Hauptfenster@@SAPAVQMetaObject@@XZ) bereits in hauptfenster.obj definiert moc_hauptfenster.obj : error LNK2005: "private: static class QMetaObject * Hauptfenster::metaObj" (?metaObj@Hauptfenster@@0PAVQMetaObject@@A) bereits in hauptfenster.obj definiert arbeitsfenster.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static class QString __cdecl Arbeitsfenster::tr(char const *,char const *)" (?tr@Arbeitsfenster@@SA?AVQString@@PBD0@Z) hauptfenster.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static class QString __cdecl Hauptfenster::tr(char const *,char const *)" (?tr@Hauptfenster@@SA?AVQString@@PBD0@Z) Release/Dienstplaner.exe : fatal error LNK1120: 2 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe. Dienstplaner.exe - 13 Fehler, 0 Warnung(en)Hoffe du kannst mir helfen!
Tschau Gartenzwerg
-
Habe vergessen noch http:// hinzuschreiben.
-
Schau mal im Linux/Unix Forum unter Qt Linux-Windows nach...
-
hi,
auch damit komm ich nicht weiter.
Ich erhalte immer den Fehler, dass er die Headerdatei "string.h" nicht findet.E:\Eigene Dateien\Dienstplaner>nmake Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten. cl -c -nologo -W3 -O1 -DNO_DEBUG -I"D:\qt\include" -Foarbeitsfenster.obj arbeitsfenster.cpp arbeitsfenster.cpp D:\qt\include\qcstring.h(50) : fatal error C1083: Include-Datei kann nicht geoef fnet werden: 'string.h': No such file or directory NMAKE : fatal error U1077: 'D:\PROGRA~1\MICROS~1\VC98\BIN\cl.exe' : Rueckgabe-Co de '0x2' Stop.Was mach ich falsch, wieso findet er die "string.h" nicht?
Tschau Gartenzwerg
PS: auch wenn ich string.h durch den kompletten Pfad bzw. durch string ersetze, kommt der selbe Fehler.
-
In QT nennt sich die Stringklasse qstring und der header qstring.h
-
hi,
@unix-tom: das weiß ich ich habe eigentlich auch diese Klasse und diese Header genutzt.
Tschau Gartenzwerg
-
Du gibst nur nmake an und der Compiler gibt Dir die Fehlermeldung raus, habe ich Dich so richtig verstanden.
-
include\qcstring.h
das hast du aber was anderes includet
-
hi,
@ smo: richtig
@ Unix-Tom: vielleicht reden wir aneinander vorbei. Ich habe in meinem Quelltext "#include <qstring.h>" zu stehen selbst wenn ich es durch "#include <qcstring.h>" ersetze, erscheint exakt der selbe Fehler.Tschau Gartenzwerg
-
Wenn es mit dem Makefile nicht klappt, gibt es noch eine Möglichkeit über die Konsole.
Wenn Du qt in C:\qt installiert hast, probier mal das hier:
cl -c -nologo -W3 -O1 -DNO_DEBUG -I"C:\qt\include" -Fo prog.obj prog.cpp link /NOLOGO /SUBSYSTEM:windows /OUT:myprog.exe myprog.obj C:\qt.lib user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsocks32.libZurück zu den Makefiles:
Anscheinend hast Du es ja hinbekommen mit tmake einen Makefile zu generieren. Wie sieht denn Deine .pro-Datei aus? Kannst Du mal rein posten ?
-
sorry...
Die Zeile mit dem Link muss so lauten:
link /NOLOGO /SUBSYSTEM:windows /OUT:myprog.exe myprog.obj C:\qt*lib*\qt.lib user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib
-
könnte es sein, daß dein beispiel von der commandozeile gestartet
dann müssen die umgebungsvariablen vcvars32.bat noch dazu...
siehe mal hier..http://lists.trolltech.com/qt-interest/2002-01/thread00859-0.html
nur weil die fehlermeldung die gleiche ist.. und sie nicht nach einem linkerfehler aussieht, sondern eher nach einem include pfad problem..
ps: könnte man ja mal checken, die vcvars32.bat mit in die autoexec.bat aufzunehmen, rechner starten und dann schaun wa mal..
-
hi,
@ elise & smo: nach vcvars32.bat + nmake oder über die Eingabe in die Konsole, erhalte ich die selben 13 Fehler wie einige Posts weiter oben.
@ smo: meine *.pro-Datei:
TEMPLATE = app CONFIG = qt warn_on release HEADERS = arbeitsfenster.h \ confreader.h \ dienst.h \ hauptfenster.h \ xmlparser.h SOURCES = arbeitsfenster.cpp \ dienst.cpp \ hauptfenster.cpp \ main.cpp INTERFACES = TARGET = DienstplanerTschau Gartenzwerg
-
hmm... scheint in Ordnung zu sein, nur die Zeile mit INTERFACES ist Quatsch. Lösch die Zeile mal und guck, ob Du weniger Fehlermeldung hast.
-
hm ..
wenn er, wie du oben sagst, die banale string.h nicht findet, klingt es für mich wie ein umgebungspfadproblem.
die vcvars.bat muss in der konsole gestartet sein und gilt auch nur, solange diese offen ist. wenn sie bleibend da sein soll, über die autoexec, und rechner neu starten..hast du aber sicher ausprobiert..
leider habe ich keine idee, welchen code du da probierst, ... aber ich denke, die pfade stehen nicht auf den vc98 include ordner...
wie kann man dir noch helfen? den code testen?
-
hi,
habe ich alles ausprobiert und erhalte ja jetzt nicht mehr den Fehler mit string.h, sondern die selben
13 Fehler wie unter der IDE VC++.wenn einer von euch den Code testen würde, wäre das echt nett.
Ich bin noch nicht besonders weit und kommentiert ist er auch nicht sehr gut.
Wäre aber über Verbesserungsvorschläge und über Fehlerbehebungen dankbar (hoffentlich habe ich nur
einen Fehler im Code, sonst muss ich auf QTranslator verzichten)Der Code zum Download:
http://www.gikrasoft.de.vu/downloads/code.zipBei Fragen, bitte posten bzw. mailen unter gikrasoft@home.pages.at
Tschau Gartenzwerg
-
Hast du Unter "Prjoekt\Einstellungen\Linker" die entsprechenden Bibliotheken eingetragen (QT.LIB oder sowas)?
-
hi,
die qt.lib gibt es bei mir nicht, liegt imho daran, dass ich die non-commercial-Edition habe.
Unter Projekte->Einstellungen->Linker habe ich folgenden Libs hinzugefügt: $(QTDIR)\lib\qt-mt230nc.lib $(QTDIR)\lib\qtmain.libIch denke nicht, dass es an den Libs liegt, da ich andere Qt-Programme ohne QTranslator mit den selben
Einstellungen erstellen kann.Tschau Gartenzwerg
-
hi,
@ elise: wie schon gesagt ich denke nicht, dass es an einem Konflikt zwischen Haupt- und Arbeitsfenster liegt, da ich es unter Linux (Qt 3.0) ohne Probleme übersetzen kann. Ich denke es liegt am QTranslator, deshalb ist mir ein Fehler mit der qstring.h schon relativ logisch, aber das er die Standard-Header nicht findet ist komisch.
Hoffe Unix-Tom oder smo können mir helfen!
Tschau Gartenzwerg