[gelöst] von den besten ;-) QT mit gemeinsam genutzten DLL?

Alles rund um die Programmierung mit Qt
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

[gelöst] von den besten ;-) QT mit gemeinsam genutzten DLL?

Beitrag 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
Zuletzt geändert von Marco812 am 5. Februar 2006 23:33, insgesamt 1-mal geändert.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Eine statische Bibliothek erzeugen. Das sollte mit dem Parameter -static gehen, wenn du du die Bibliothek baust.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

danke für den Tipp, aber wo kann ich das einstellen?

Gruß

Marco812
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

erhälst du den Fehler wenn du nmake sub-src laufen läßt, oder dein Programm übersetzten läßt?
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag von Marco812 »

Hallo,

nein habe ich nicht, was würdest du jetzt empfehlen? Nochmal alles neu installieren?

Gruß

Marco812
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

ja. und den bei der statischen version noch -release -fast einfügen, denn eine Debugversion ist ja unnötig
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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'
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Marco812
Beiträge: 139
Registriert: 22. November 2005 11:28

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Haste configue und nmake von VS .net 2003'er konsole laufen lassen?
Antworten