DLL's beilegen?
DLL's beilegen?
Hallo,
ich programmiere mit Eclipse + QtIntegration. Ich habe zum Funktionstest mal ein Testprogramm erstellt, was sich auch anstandslos kompilieren lässt. Beim Starten der Anwdung bekomme ich diverse Fehler über fehlende DLL's. Ich habe diese aus dem Qt-Bin Verzeichnis in den Ordner der .exe kopiert und dann hat es funktioniert.
Wie kann ich es anstellen, dass ich die DLL's nicht mehr dem Programm beizulegen habe? Ich möchte erreichen, dass alles nötige schon in der .exe drinsteht, diese keine zusätzlichen Datein mehr benötigt.
mfg devcube
ich programmiere mit Eclipse + QtIntegration. Ich habe zum Funktionstest mal ein Testprogramm erstellt, was sich auch anstandslos kompilieren lässt. Beim Starten der Anwdung bekomme ich diverse Fehler über fehlende DLL's. Ich habe diese aus dem Qt-Bin Verzeichnis in den Ordner der .exe kopiert und dann hat es funktioniert.
Wie kann ich es anstellen, dass ich die DLL's nicht mehr dem Programm beizulegen habe? Ich möchte erreichen, dass alles nötige schon in der .exe drinsteht, diese keine zusätzlichen Datein mehr benötigt.
mfg devcube
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
-
androphinx
- Beiträge: 170
- Registriert: 26. Januar 2009 09:19
- Wohnort: 127.0.0.2
Also mir geht es schon ums statische kompilieren/linken, nur bekomme ich das irgendwie nicht hin. hier im forum habe ich keinen passenden beitrag gefunden, mit dem ich das hinbekommen könnte und im internet auch nicht.
was ich bis jetzt gemacht habe:
1. http://www.nabble.com/Problem-compile-Q ... 92075.html befolgt (nur die sspi.h durch den code dort ersetzt)
2. http://wiki.qtcentre.org/index.php?titl ... on_Windows vollständig durchgemacht bzw. versucht. bei dem befehl mingw32-make sub-src
bekomme ich einen fehler:
3. Wenn ich ein Projekt nun kompilieren will bekomme ich auch eine fehlermeldung:
Vielleicht könnt ihr mir helfen, wäre jedenfalls schön.
mfg devcube
was ich bis jetzt gemacht habe:
1. http://www.nabble.com/Problem-compile-Q ... 92075.html befolgt (nur die sspi.h durch den code dort ersetzt)
2. http://wiki.qtcentre.org/index.php?titl ... on_Windows vollständig durchgemacht bzw. versucht. bei dem befehl mingw32-make sub-src
bekomme ich einen fehler:
Code: Alles auswählen
C:\Qt\4.4.3>mingw32-make sub-src
cd src/winmain/ && mingw32-make
mingw32-make[1]: Entering directory `C:/Qt/4.4.3/src/winmain'
mingw32-make -f Makefile.Debug all
mingw32-make[2]: Entering directory `C:/Qt/4.4.3/src/winmain'
g++ -c -g -Wall -frtti -fexceptions -mthreads -DQT_THREAD_SUPPORT -DUNICODE -DQT
_LARGEFILE_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNIN
GS -DQT3_SUPPORT -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -I'../../include' -I'tmp' -
I'../../include/QtCore' -I'c:/Qt/4.4.3/include/qtmain' -I'tmp/rcc/debug_static'
-I'tmp' -I'c:/Qt/4.4.3/include/ActiveQt' -I'tmp/moc/debug_static' -I'.' -I'../..
/mkspecs/win32-g++' -o tmp/obj/debug_static/qtmain_win.o qtmain_win.cpp
In file included from ../../include/QtCore/qatomic_windows.h:1,
from ../../include/QtCore/../../src/corelib/arch/qatomic_arch.h
:72,
from ../../include/QtCore/qatomic_arch.h:1,
from ../../include/QtCore/../../src/corelib/thread/qbasicatomic
.h:203,
from ../../include/QtCore/qbasicatomic.h:1,
from ../../include/QtCore/../../src/corelib/thread/qatomic.h:42
,
from ../../include/QtCore/qatomic.h:1,
from ../../include/QtCore/../../src/corelib/tools/qbytearray.h:
42,
from ../../include/QtCore/qbytearray.h:1,
from qtmain_win.cpp:39:
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:387: error: declar
ation of C function `long int InterlockedCompareExchange(long int*, long int, lo
ng int)' conflicts with
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1663: error:
previous declaration `LONG InterlockedCompareExchange(volatile LONG*, LONG, LON
G)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:388: error: declar
ation of C function `long int InterlockedIncrement(long int*)' conflicts with
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1676: error:
previous declaration `LONG InterlockedIncrement(volatile LONG*)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:389: error: declar
ation of C function `long int InterlockedDecrement(long int*)' conflicts with
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1667: error:
previous declaration `LONG InterlockedDecrement(volatile LONG*)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:390: error: declar
ation of C function `long int InterlockedExchange(long int*, long int)' conflict
s with
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1668: error:
previous declaration `LONG InterlockedExchange(volatile LONG*, LONG)' here
../../include/QtCore/../../src/corelib/arch/qatomic_windows.h:391: error: declar
ation of C function `long int InterlockedExchangeAdd(long int*, long int)' confl
icts with
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1672: error:
previous declaration `LONG InterlockedExchangeAdd(volatile LONG*, LONG)' here
mingw32-make[2]: *** [tmp/obj/debug_static/qtmain_win.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.4.3/src/winmain'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.4.3/src/winmain'
mingw32-make: *** [sub-winmain-sub_src_target_ordered] Error 2
C:\Qt\4.4.3>Code: Alles auswählen
C:\Dokumente und Einstellungen\ich\Eigene Dateien\Programmierung\Qt\hello>make
c:/Qt/4.4.3/bin/qmake.exe -win32 -o Makefile hello.pro
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Dokumente und Einstellungen/ich/Eigene D
ateien/Programmierung/Qt/hello'
g++ -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-ps
eudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug/hello.exe debug/hello.o
-L'c:/Qt/4.4.3/lib' -lmingw32 -lqtmaind -lQtGuid -lgdi32 -lcomdlg32 -loleaut32
-limm32 -lwinmm -lwinspool -lmsimg32 -lQtCored -lkernel32 -luser32 -lshell32 -l
uuid -lole32 -ladvapi32 -lws2_32
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
d -lQtGuid
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug/hello.exe] Error 1
mingw32-make[1]: Leaving directory `C:/Dokumente und Einstellungen/ich/Eigene Dateien/Programmierung/Qt/hello'
mingw32-make: *** [debug] Error 2
C:\Dokumente und Einstellungen\ich\Eigene Dateien\Programmierung\Qt\hello>mfg devcube
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
http://qtforum.de/forum/viewtopic.php?t ... 60ab36562c
das klappte fuer mich sehr gut (falls das noch aktuell ist ...).
sorry, im moment hab ich keine zeit mir die beiden anderen links durchzulesen, kannst ja mal das vorgehen vergleichen ...
mfg,
julian
das klappte fuer mich sehr gut (falls das noch aktuell ist ...).
sorry, im moment hab ich keine zeit mir die beiden anderen links durchzulesen, kannst ja mal das vorgehen vergleichen ...
mfg,
julian
Den hab ich mir auch angesehen, aber ihn nicht durchgemacht. Ich entferne dann Qt und MinGW nochmal, und schau mal ob mir dein Link helfen kann.
Edit: Bis jetzt sieht es gut aus, bin schon weiter als sonst. Nur bei der Auswahl der Pakete hatte ich das Problem, dass eines nicht herunterladbar war. Dann habe ich einfach auf http://ftp.heanet.ie/disk1/sourceforge/m/mi/mingw/ gesucht und gefunden.
Edit: Bis jetzt sieht es gut aus, bin schon weiter als sonst. Nur bei der Auswahl der Pakete hatte ich das Problem, dass eines nicht herunterladbar war. Dann habe ich einfach auf http://ftp.heanet.ie/disk1/sourceforge/m/mi/mingw/ gesucht und gefunden.
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
Die werden aber auch nur auf der Platte kleiner. Dafür lassen sie sich kaum noch packen, da sie schon gepackt sind. Zu Zeiten von Disketten und ZIP-Laufwerken mag das noch eine Rolle gespielt haben, da weniger gelesen werden musste. Direkt von CD gestartet, gibt es vielleicht auch noch einen Vorteil, ansonsten ist es nur noch ein nettes Gimmick.devcube hat geschrieben:Einen Tipp hab ich noch: benutzt UPX, dann werden eure .exe sehr viel kleiner. Bei mir war eine nur noch 1/3 von der Originalgröße groß.
Ich nutze allerdings auch UPX, da viele meiner Programme direkt vom USB-Stick laufen. Und da viele Sticks eine miserable Leserate aufweisen, sehe ich auch da Vorteile
-
androphinx
- Beiträge: 170
- Registriert: 26. Januar 2009 09:19
- Wohnort: 127.0.0.2
Kurz und schmerzlos NEIN !!!!androphinx hat geschrieben:also wenn es nur darum geht dass du die qt-dlls immr in den programmordner kopieren musst, dann kopier sie einfach nach C:\Windows\system32. ansonsten musst du statisch linken
Mfg androphinx
Du kannst shared Bibliotheken auch in dein Installation Verzeichnis packen.
Dafür gibt es bei Windoo... die qt.conf die man auch mit Installations Programmen bearbeiten kann.
Code: Alles auswählen
[Paths]
Prefix =
Plugins =
Libs =
Translations =