Seite 1 von 2
[gelöst] von den besten ;-) QT mit gemeinsam genutzten DLL?
Verfasst: 4. Februar 2006 22:09
von Marco812
Hallo,
bei einer MFC-Anwendung habe ich zwei Möglichkeiten ein Programm zu erstellen:
1) MFC in einer statischen Bibliothek verwenden
Hir wird nur die *.exe erstellt und ich muss zusätzliche dll’s mit dem Programm ausliefern.
2) MFC in einer gemeinsam genutzten DLL verwenden
Hier werden alle dll’s mit in die *.exe Kompiliert, das Programm ist dementsprechend größer, aber ich muss keine zusätzlichen dll’s mit liefern.
Was muss ich einstellen damit Version 2 auch mit QT funktioniert? Ich möchte keine zusätzlichen dll’s haben, sondern nur eine *.exe und die soll ohne zusätzliche dll’s auf einem anderen Rechner ausführbar sein.
Gruß
Marco812
P.S.
Verwende QT 4.1 und Visual Studio.Net
Verfasst: 4. Februar 2006 22:27
von BartSimpson
Eine statische Bibliothek erzeugen. Das sollte mit dem Parameter -static gehen, wenn du du die Bibliothek baust.
Verfasst: 4. Februar 2006 23:13
von Marco812
Hallo,
danke für den Tipp, aber wo kann ich das einstellen?
Gruß
Marco812
Verfasst: 4. Februar 2006 23:35
von BartSimpson
Dazu must du die ganze lib neu bauen und den bei configure den Parameter -static angeben. Dann erhällst du die statische Version die in deine exe eingebaut wird.
Verfasst: 5. Februar 2006 13:34
von Marco812
Hallo,
ich habe jetzt configure.exe -static ausgeführt, aber das Programm ist nach dem Kompilieren nicht größer und funktioniert immer noch nicht ohne die dll's.
Muss ich noch etwas beachten?
Gruß
Marco
Verfasst: 5. Februar 2006 13:43
von BartSimpson
configure.exe baut nur das makefile jetzt must du mit nmake noch die bibliothek bauen. Die solltest du aber denn besser in ein anderes Verzeichnis installieren. Wenn du die lib hast, must du bei deinem VC Projekt sagen, das er gegen die statische lib linken soll.
Verfasst: 5. Februar 2006 15:57
von Marco812
Hallo,
ich habe jetzt folgedes gemacht:
configure -static
nmake sub-src
nun erhalte ich beim kompilieren folgenden Fehler:
fatal error LNK1181: Eingabedatei 'C:\Qt\lib\QtGuid.lib' kann nicht geöffnet werden
Was muss ich jetzt unter Projekt->Eigenschaften->Linker->Allgemein->Zusätzliche Bibliotheksverzeichnisse angeben?
Wie bekomme ich ein zusätzliches Verzeichnis, das ich zwischen statisch und dynamisch wählen kann?
Gruß
Marco812
Verfasst: 5. Februar 2006 16:24
von BartSimpson
erhälst du den Fehler wenn du nmake sub-src laufen läßt, oder dein Programm übersetzten läßt?
Verfasst: 5. Februar 2006 16:47
von Marco812
Hallo,
der Fehler entsteht beim Kompilieren.
wenn ich nmake sub-src laufen lasse erhalte folgende Meldung:
C:\Qt>nmake sub-src
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd src && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd winmain && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Debug all
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Release all
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd tools\moc && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Release
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd tools\rcc && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Release
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd tools\uic && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Release
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd corelib && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Debug all
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Release all
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd xml && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Debug all
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Release all
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cd gui && NMAKE
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
NMAKE -f Makefile.Debug all
Microsoft (R) Program Maintenance-Dienstprogramm: Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. Alle Rechte vorbehalten.
cl -c -nologo -Zm200 -Zi -MDd -Zi -MDd -W3 -DQT_THREAD_SUPPORT -DUNICODE
-DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_EDITION=QT_EDITION_DESKTOP -DQT_BUILD_GUI_L
IB -DQT_NO_CAST_TO_ASCII -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_RASTER_IMAGEENGINE -
DQT_RASTER_PAINTENGINE -DQT_HAVE_SSE -DQT_PDF_SUPPORT -DQT_NO_STYLE_MAC -DQT_NO_
STYLE_WINDOWSXP -DQT_CORE_LIB -I"C:/Qt/include/QtCore" -I"C:/Qt/include" -I"C:/Q
t/include/QtGui" -I"tmp" -I"..\3rdparty\wintab" -I"..\3rdparty\libpng" -I"..\3rd
party\zlib" -I"C:/Qt/include/ActiveQt" -I"tmp\moc\debug_static" -I"." -I"C:/Qt/m
kspecs/win32-msvc.net" -Fotmp\obj\debug_static\ @C:\DOKUME~1\MARCON~1\LOKALE~1\T
emp\nma02804.
qblackraster.c
qgrayraster.c
Generieren von Code...
cl -c -FIqt_gui_pch.h -Yuqt_gui_pch.h -Fptmp\obj\debug_static\QtGuid_pch
.pch -nologo -Zm200 -Zi -MDd -Zi -MDd -W3 -w34100 -w34189 -GR -EHsc -DQT_THREAD_
SUPPORT -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_EDITION=QT_EDITION_DESKTOP
-DQT_BUILD_GUI_LIB -DQT_NO_CAST_TO_ASCII -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_RAS
TER_IMAGEENGINE -DQT_RASTER_PAINTENGINE -DQT_HAVE_SSE -DQT_PDF_SUPPORT -DQT_NO_S
TYLE_MAC -DQT_NO_STYLE_WINDOWSXP -DQT_CORE_LIB -I"C:/Qt/include/QtCore" -I"C:/Qt
/include" -I"C:/Qt/include/QtGui" -I"tmp" -I"..\3rdparty\wintab" -I"..\3rdparty\
libpng" -I"..\3rdparty\zlib" -I"C:/Qt/include/ActiveQt" -I"tmp\moc\debug_static"
-I"." -I"C:/Qt/mkspecs/win32-msvc.net" -Fotmp\obj\debug_static\ @C:\DOKUME~1\MA
RCON~1\LOKALE~1\Temp\nmb02804.
Befehlszeilenwarnung D4002 : Unbekannte Option '-w34100' wird ignoriert
Befehlszeilenwarnung D4002 : Unbekannte Option '-w34189' wird ignoriert
qdrawhelper_x86.cpp
painting\qdrawhelper_x86.cpp(45) : fatal error C1083: Include-Datei kann nicht g
e÷ffnet werden: 'mmintrin.h': No such file or directory
NMAKE : fatal error U1077: 'cl' : Rueckgabe-Code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Programme\Microsoft Visual Studio 6\VC98\bin\NMA
KE.EXE"' : Rueckgabe-Code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : Rueckgabe-Code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : Rueckgabe-Code '0x2'
Stop.
Gruß
Marco
Verfasst: 5. Februar 2006 17:08
von BartSimpson
haste vorher auch einen neuen leeren Ordner angelegt, wo du die Qt Quellen reingeworfen hast bevor du die lib gebaut hast? denn so wie es ausschaut, erzeugt er nicht alles neu.
Verfasst: 5. Februar 2006 18:10
von Marco812
Hallo,
nein habe ich nicht, was würdest du jetzt empfehlen? Nochmal alles neu installieren?
Gruß
Marco812
Verfasst: 5. Februar 2006 18:34
von BartSimpson
ja. und den bei der statischen version noch -release -fast einfügen, denn eine Debugversion ist ja unnötig
Verfasst: 5. Februar 2006 19:22
von Christian81
mmintrin.h? Das sieht aus wie msvc6 ...
Diese Datei in qt4-src/src/gui/painting ersetzen:
http://cvs.sourceforge.net/viewcvs.py/* ... inting.pri
Ausserdem sollte man das richtige mkspec nehmen: 'qconfigure.bat msvc -static'
Verfasst: 5. Februar 2006 19:53
von Marco812
Hallo,
also ich habe jetzt folgendes gemacht QT neu installiert(eine Kopie vom QTDIE angelegt). Dann in das QTDIR gewechselt und configure -static -release -fast ausgeführt und anschließend nmake
dann wieder dieser Fehler obwohl ich painting.pri ersezt habe:
qdrawhelper_x86.cpp
painting\qdrawhelper_x86.cpp(45) : fatal error C1083: Include-Datei kann nicht g
e÷ffnet werden: 'mmintrin.h': No such file or directory
NMAKE : fatal error U1077: 'cl' : Rueckgabe-Code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Programme\Microsoft Visual Studio 6\VC98\bin\NMA
KE.EXE"' : Rueckgabe-Code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : Rueckgabe-Code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : Rueckgabe-Code '0x2'
Stop.
warum nutzt er aber C:\Programme\Microsoft Visual Studio 6\VC98\bin\NMAKE.EXE wir benutze doch mittlerweile Visual Studio .NET 2003 wo kann ich das denn ändern?
Vielen dank schon einmal für eure tolle Hilfe, denn das Programm muss morgen laufen und ich weiß nicht wie, bin fast am verzweifeln!
Gruß
Marco812
Verfasst: 5. Februar 2006 20:27
von BartSimpson
Haste configue und nmake von VS .net 2003'er konsole laufen lassen?