Seite 1 von 2

Qt GUI mit Shell-Api Programm(windows) verheiraten

Verfasst: 12. März 2008 16:26
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.

Verfasst: 12. März 2008 16:31
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.

Verfasst: 12. März 2008 17:43
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?

Verfasst: 12. März 2008 18:01
von Christian81
Man kann erstens die Fensterpuffergrösse in den Einstellungen ändern und zweitens mit STRG+C die Ausgabe abbrechen.

Verfasst: 12. März 2008 18:16
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.

Verfasst: 12. März 2008 18:19
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

Verfasst: 12. März 2008 19:19
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.

Verfasst: 12. März 2008 20:44
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

Verfasst: 13. März 2008 09:29
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?

Verfasst: 13. März 2008 12:47
von Christian81
Wenn keine qtmain.lib da ist wurde Qt auch nicht kompiliert...

Verfasst: 13. März 2008 18:35
von Souljumper
also ich habe jetzt die den kommandozeilen promt von visual studio benuttz und darin dann die configurations laufen lassen. war das falsch?

Verfasst: 13. März 2008 19:04
von Christian81
Ich schliesse aus deiner Frage dass Du den Link nicht gelesen hast - was soll man noch mehr erklären als dort steht???

Verfasst: 13. März 2008 20:32
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.

Verfasst: 13. März 2008 21:18
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

Verfasst: 14. März 2008 16:42
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ß