Visual C++ und QT



  • hi,
    ich habe die VC6 - Autorenversion und möchte jetzt Programme, die die Bibliothek Qt nutzen
    kompilieren. Ich habe das Projekt ganz normal über "Neues Qt-Projekt" erstellt, aber erhalte beim
    Linken folgende Fehler:

    --------------------Konfiguration: Dienstplaner - Win32 Debug--------------------
    Linker-Vorgang läuft...
    arbeitsfenster.obj : error LNK2001: Nichtaufgeloestes externes Symbol __chkesp
    dienst.obj : error LNK2001: Nichtaufgeloestes externes Symbol __chkesp
    hauptfenster.obj : error LNK2001: Nichtaufgeloestes externes Symbol __chkesp
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __chkesp
    
    ...
    hauptfenster.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static class QString  QString::null" (?null@QString@@2V1@A)
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static class QString  QString::null" (?null@QString@@2V1@A)
    dienst.obj : error LNK2001: Nichtaufgeloestes externes Symbol __fltused
    hauptfenster.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static class QString  __cdecl Hauptfenster::tr(char const *,char const *)" (?tr@Hauptfenster@@SA?AVQString@@PBD0@Z)
    hauptfenster.obj : error LNK2001: Nichtaufgeloestes externes Symbol __purecall
    LINK : error LNK2001: Nichtaufgeloestes externes Symbol _WinMainCRTStartup
    Debug/Dienstplaner.exe : fatal error LNK1120: 14 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    
    Dienstplaner.exe - 32 Fehler, 0 Warnung(en)
    

    Was mach ich falsch?

    Tschau Gartenzwerg



  • hi,
    hab ich im falschem Forum gepostet oder kann mir keiner helfen? 😞

    Tschau Gartenzwerg



  • hi,
    vielleicht sollte ich noch ein paar Information herausrücken.

    Ich nutze Qt 2.3 non-commercial-Edition und wollte nun versuchen mein Projekt
    mit QTranslator zu internationalisieren.
    Vielleicht liegt es daran, muss ich beim Präprozessor noch etwas hinzufügen o.ä.?

    Tschau Gartenzwerg



  • hi

    wie hast du qt installiert? bei mir hat es sich automatisch in das studio "hineingefressen", also die richtigen pfade gelegt...

    leider hab ich heute morgen keine zeit, die fehler konkret zu recherchieren, aber linkst du richtig?

    zum testen: voraussichtlich hat sich bei der installation ein ordner angelegt, in dem auch lauffähige beispiele sind, die man über dsp öffnen kann und die sich problemlos linken lassen.

    mach dir (im selben ordner) mal eine kopie und füge deinen code ein, dann zeigt sich, ob es nur ein linker/pfad problem ist...

    bis später



  • hi,
    ich habe Qt ganz einfach mit dem mitgelieferten Setup-Programm installiert.
    Bei mir hat es sich auch ins VC eingeschlichen.
    Ich habe schon einige Programme mit der selben Linkereinstellung mit Qt geschrieben und
    die funktionieren einwandfrei. Nur das aktuelle nicht. Ich habe nie zuvor QTranslator
    benutzt und vermute, dass ich in dessen Benutzung irgendetwas falsch mache, oder irgendetwas
    beim Linker verändert werden muss.

    Tschau Gartenzwerg



  • http://www.opencascade.com/community/forum/thread_2727/

    hier ist ein qt translator, der funzen soll.. versuch den mal mit den beschriebenen einstellungen

    ich versuchs ev. nachher auch mal.







  • 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.lib
    

    Zurü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		= Dienstplaner
    

    Tschau Gartenzwerg


Anmelden zum Antworten