Qt GUI mit Shell-Api Programm(windows) verheiraten

Verschiedenes zu Qt
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Qt GUI mit Shell-Api Programm(windows) verheiraten

Beitrag von Souljumper »

hi,

ich habe mir eine GUI mit der QT gebaut und möchte jetzt meinen Visual Studio Kommandozeilenprogramm mit der Gui verheiraten. Nun stoße ich aber auf das Problem, dass wenn ich über das qmake tool und makefile arbeite, er die headerdateien nicht kennt, die ich für mein kommandozeilen programm brauche.

die headerfiles die ich brauche sind:

Code: Alles auswählen

#include <shlobj.h>
#include <shtypes.h>
#include <strsafe.h
da ich halt shell/winapi aufrufe durchführe.

Habe versucht in meinem projekt-file die ganze libs und include dateien von visual studio anzuhängen und sie dem projekt damit bekannt zu geben.

mein projektfile sieht derzeit so aus:

Code: Alles auswählen

CONFIG     += warn_on release
CONFIG   += release
SOURCES  += gui.cpp
SOURCES  += StartButton.cpp
SOURCES  += dialog.cpp
HEADERS  += dialog.h
HEADERS  += StartButton.h
QMAKESPEC =C:\Programme\qt\4.3.4\mkspecs\win32-msvc2005
INCLUDEPATH +="C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\Include"
INCLUDEPATH +="C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl"
INCLUDEPATH +="C:\Programme\Microsoft Visual Studio 8\VC\include"
INCLUDEPATH +="C:\Programme\Microsoft Visual Studio 8\VC\include\CodeAnalysis"
INCLUDEPATH +="C:\Programme\Microsoft Visual Studio 8\VC\include\sys"
INCLUDEPATH +="C:\Programme\Microsoft Visual Studio 8\VC\include\msclr"
INCLUDEPATH +="C:\Programme\Microsoft Visual Studio 8\VC\include\msclr\com"
LIBS += "C:\Programme\Microsoft Visual Studio 8\VC\lib" 
TARGET   = gui
wenn ich make aufrufe fliegt mir aber alles um die ohren und es gibt seiten lange fehlermeldungen
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4156: err
or: `LPCITEMIDLIST' was not declared in this scope
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4157: err
or: expected constructor, destructor, or type conversion before "ILFindLastID"
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4157: err
or: expected `,' or `;' before "ILFindLastID"
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4158: war
ning: `ILRemoveLastID' initialized and declared `extern'
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4158: war
ning: `__stdcall__' attribute only applies to function types
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4158: err
or: `LPITEMIDLIST' was not declared in this scope
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4159: err
or: expected constructor, destructor, or type conversion before "ILAppendID"
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4159: err
or: expected `,' or `;' before "ILAppendID"
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4160: war
ning: `ILFree' initialized and declared `extern'
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4160: err
or: variable or field `ILFree' declared void
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4160: war
ning: `__stdcall__' attribute only applies to function types
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4160: err
or: `LPITEMIDLIST' was not declared in this scope
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4161: err
or: expected constructor, destructor, or type conversion before "ILCloneFirst"
../Programme/Microsoft Visual Studio 8/VC/PlatformSDK/Include/shlobj.h:4161: err
or: expected `,' or `;' before "ILCloneFirst"

------------------------------geht noch lange so weiter----
../Programme/Microsoft Visual Studio 8/VC/include/iosfwd:609: error: no matching
function for call to `move_s(wchar_t*&, size_t&, const wchar_t*&, size_t&, std:
:_Secure_char_traits_tag)'
mingw32-make[1]: *** [release/gui.o] Error 1
mingw32-make[1]: Leaving directory `C:/GUI_ListDir'
mingw32-make: *** [release] Error 2
Für sich allein sind sowohl die Gui mit Qt und das VC++ Kommandozeilenprogramm für sich compilierbar und ausführbar.

Hat jemand Erfahrung damit, VC++ mit Qt Programmen zu verheiraten ? ich weis nicht mehr weiter.

Danke im Voraus.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Zu wenig Code bzw. nicht den ersten Fehler gepostet - mit Folgefehlern kann niemand was anfangen. Die ganzen Includepfade im pro-File anzugeben ist falsch - wenn Du das brauchst ist eine VS-Buildumgebung (Stichwort vsvars32.bat + Forensuche) nicht korrekt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Beitrag von Souljumper »

>Stichwort vsvars32.bat + Forensuche

danke, werd ich mal versuchen..

bzgl de rFehlermeldung, es sind leider soviele fehlermeldungen, dass der anfang der meldungen nicht mehr im fenster ist, wenn alle fehlermeldungen ausgegeben wurden. wie krieg da den die erste fehlermeldung raus?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Man kann erstens die Fensterpuffergrösse in den Einstellungen ändern und zweitens mit STRG+C die Ausgabe abbrechen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Beitrag von Souljumper »

hab mal dieses tutorial hier gefunden:
http://www.qtforum.de/forum/viewtopic.php?t=1259#7714

also es fängt damit an, das die version die ich drauf hab die 4.3.4 ist und sich das patch nicht richtig anwenden läst. wo krieg ich den die 4.3.0 qt her, bei trolltech gibts nur die neuere version für die das patch nciht geht

edit: ok, hab die alten versionen gefunden. versuchs damit dann weiter.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wer lesen kann ist klar im Vorteil - der Patch ist schon lange nicht mehr nötig. Ausserdem gibt es eine gute Anelitung auf http://doc.trolltech.com/4.3/installation.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Beitrag von Souljumper »

ok, danke für den link. hab jetzt mal die qt mit configure -platform win32-msvc in dem vc2005 promt erstellt.

die fehlermeldungen sind jetzt deutlich weniger geworden. hab sie mal angehängt. woher krieg ich die fehlende .lib datei. die gibt es im qt ordner nicht.
Dateianhänge
Clipboard01.jpg
Clipboard01.jpg (117.86 KiB) 6358 mal betrachtet
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

1. keine Bilder posten wenn man es auch als Txt kopieren kann!

2. die mkspec sollte eher win32-msvc2005 sein

3. qtmain wird kompiliert wenn man Qt korrekt durchkompiliert hat
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Beitrag von Souljumper »

Christian81 hat geschrieben:1. keine Bilder posten wenn man es auch als Txt kopieren kann!

2. die mkspec sollte eher win32-msvc2005 sein

3. qtmain wird kompiliert wenn man Qt korrekt durchkompiliert hat
habe noch mal mit confclean die konfiguration gelöscht und dann nochmal für win32-msvc2005 alles durchlaufen lassen. keine fehlermeldungen, aber auch keine qtmain.lib, was es gibt ist eine qtmain.prl und qtmaind.prl.

im lib ordner meines qt installationsverzeichnisses finden sich zudem gar keine dateien die mit lib enden

was mach ich falsch?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn keine qtmain.lib da ist wurde Qt auch nicht kompiliert...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Beitrag von Souljumper »

also ich habe jetzt die den kommandozeilen promt von visual studio benuttz und darin dann die configurations laufen lassen. war das falsch?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich schliesse aus deiner Frage dass Du den Link nicht gelesen hast - was soll man noch mehr erklären als dort steht???
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Beitrag von Souljumper »

gelesen hab ich die seite schon, die kombinationen bin ich mitterlweile alle durch. hab das ganze jetzt schon mit

configure -platform win32-msvc
configure -platform win32-msvc2005

in der VC und der nomalen windows kommandozeile eingegeben (vorher immer den confclean gemacht), aber ich krieg keine lib dateien erzeugt. fehlermeldungen krieg ich auch keine.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du hast sie nicht gelesen
The actual commands needed to build Qt depends on your development system. For Microsoft Visual Studio to create the library and compile all the demos, examples, tools and tutorials type:

nmake
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Souljumper
Beiträge: 23
Registriert: 12. März 2008 14:34

Beitrag von Souljumper »

habs hinbekommen, die kombination machts.

in der vs-kommandozeile den "configure -platform win32-msvc2005" durchführen.

dann deinen nmake zur erstellung der .lib's

und die spätere kompilierung des programm erfolgt dann auch über die vs-kommandozeile.

hatte ich so jetzt nicht erlesen, wenn man es weist, erkennt man aber das es in drin steht :P

danke für die intensiv betreuung.

gruß
Antworten