Seite 1 von 1

Was kann ich tun?

Verfasst: 20. Februar 2007 17:11
von Hass
Hallo Zusammen,
ich moechte ein aus QT bestandenes Programm unter ein keine QT-Installation gemachtes System verlegen. Das System ist Windows. Natuerlich weiss ich,dass meine Programm mit folgenden DLLs zusammen gebracht werden muessen.

QtGui4.dll
QtCore4.dll
mingwm10.dll

Aber wie kann ich tun,ich bin der Meinung,wie ich xxx.pro beschreiben, wenn diese DLLs in relativ-directory meines Programms gesteckt sind?

c:\my_program\

xxx.exe
lib
|----QtGui4.dll
|----QtCore4.dll
|----mingwm10.dll
|----andere.....
.....

Information von meinem PC:
Betriebsystem ist Windows XP Home
Complier ist GCC/G++
QTs Version ist 4.2.1

Danke schoen.
Mfg.

Verfasst: 20. Februar 2007 21:01
von dhcase
Versuch mal http://doc.trolltech.com/4.2/qcoreappli ... ibraryPath oder http://doc.trolltech.com/4.2/qcoreappli ... braryPaths
Ansonsten kannst du die DLLs noch in den system32-Ordner kopieren.

Verfasst: 20. Februar 2007 21:09
von Christian81
Die Dlls (nicht Plugins) werden beim Start der Applikation geladen - und nicht per QLibrary. Also nützt das auch nichts. Die Dlls müssen immer im PATH liegen (es gibt noch zwei andere Möglichkeiten, aber die sind noch schwieriger zu realisieren)

Verfasst: 20. Februar 2007 23:22
von dhcase
Christian81 hat geschrieben:Die Dlls (nicht Plugins) werden beim Start der Applikation geladen - und nicht per QLibrary. Also nützt das auch nichts.
Stimmt, hab ich nicht dran gedacht...
Christian81 hat geschrieben:Die Dlls müssen immer im PATH liegen (es gibt noch zwei andere Möglichkeiten, aber die sind noch schwieriger zu realisieren)
Eine Möglichkeit ist statisch linken, aber was ist die andere?

Verfasst: 20. Februar 2007 23:34
von Christian81
Oh, statisch linken habe ich nicht gedacht
a) es gibt noch die blöden Manifests, allerdings müssen die libs dann in windows\winsxs liegen (soweit ich weiss, habe mich noch nicht intensiv mit beschäftigt)
b) man kann es auch in der Registry festlegen wenn ich die Diskussion auf qt-interest richtig verfolgt habe, aber auch hier - noch nicht weiter verfolgt

Verfasst: 21. Februar 2007 04:29
von Hass
Christian81 hat geschrieben:Oh, statisch linken habe ich nicht gedacht
a) es gibt noch die blöden Manifests, allerdings müssen die libs dann in windows\winsxs liegen (soweit ich weiss, habe mich noch nicht intensiv mit beschäftigt)
b) man kann es auch in der Registry festlegen wenn ich die Diskussion auf qt-interest richtig verfolgt habe, aber auch hier - noch nicht weiter verfolgt
Also,wie du gezeigt hast,kein Cross Platform Weg zu finden,stimmt das? Wir muessen DLLs mit Exe zusammen in einem einigen Dateiordner liegen? stimmt das? Also es ist zu schwer.........

Verfasst: 21. Februar 2007 10:39
von BartSimpson
Zur Softwareverteilung sollte man unter Windows besser MSI nutzen.
Um entsprechende Pakete zu erzeigen, lohnt ein Blick auf das Projekt Wix.

Verfasst: 21. Februar 2007 10:48
von Hass
BartSimpson hat geschrieben:Zur Softwareverteilung sollte man unter Windows besser MSI nutzen.
Um entsprechende Pakete zu erzeigen, lohnt ein Blick auf das Projekt Wix.
Sonst noch anderes?

Verfasst: 21. Februar 2007 10:55
von BartSimpson
Mit allem anderen wirst du früher oder später Probleme bekommen, da einige Funktionen nur mit MSI gehen.

Verfasst: 21. Februar 2007 11:01
von Hass
BartSimpson hat geschrieben:Mit allem anderen wirst du früher oder später Probleme bekommen, da einige Funktionen nur mit MSI gehen.
Danke sehr, aber es muss anderen Weg geben,dass das Problem geloest werden kann.

Verfasst: 21. Februar 2007 11:04
von BartSimpson
Wenn du es "DLL Höllen" sicher machen willst, dann nicht. Da muste du aber denn auch den MS Compiler ab Version 8 benutzen.

Verfasst: 21. Februar 2007 11:46
von Hass
BartSimpson hat geschrieben:Wenn du es "DLL Höllen" sicher machen willst, dann nicht. Da muste du aber denn auch den MS Compiler ab Version 8 benutzen.
"DLL Höllen"?
Ich moechte nur DLLs im Subdateiordner des Programm(EXE) liegen,so dass diese DLLs nicht im Globaldateiordner von Windows verlegt werden. Wenn es getan wuerde,daechte ich genau, beinahe zu "DLL Hoellen" zu werden.Unter Microsoft.NET koennten wir eine xml.config beschreiben,so dass Lokale der DLLs immer notiert wuerden. Wie macht das?

Verfasst: 21. Februar 2007 17:21
von BartSimpson
Er einzige Weg um der DLL Hölle zu entkommen sind Side-by-Side Assemblys. Diese DLL's können nur mit dem VC2005 erstellt werden, und müssen über das MSI System installiert werden. Diese werden dann über ein Manifest der Anwendung gefunden. Einfach die DLL's irgenwo ablegen und denn diese im Suchpfad einbinden ist Mist, denn da kannste auf die DLL Hölle warten. MS hat mehre nette Artikel zu dem Thema suche mal nach Side-by-Side Asselby auf den msdn Seiten.

Verfasst: 22. Februar 2007 05:39
von Hass
BartSimpson hat geschrieben:Er einzige Weg um der DLL Hölle zu entkommen sind Side-by-Side Assemblys. Diese DLL's können nur mit dem VC2005 erstellt werden, und müssen über das MSI System installiert werden. Diese werden dann über ein Manifest der Anwendung gefunden. Einfach die DLL's irgenwo ablegen und denn diese im Suchpfad einbinden ist Mist, denn da kannste auf die DLL Hölle warten. MS hat mehre nette Artikel zu dem Thema suche mal nach Side-by-Side Asselby auf den msdn Seiten.
Es ist so schade,dass ich nur OpenSource Develop Tool habe,so dass mir beinahe mit gcc/c++ Programmsentwicklungen machen wuerde. Sag mal,ob mein Problem oder dieses Theme zu "Dlls redistributed" nie geloest werden koennte. Haette ich nur den Weg,Windows PATH einzusetzen?

Verfasst: 22. Februar 2007 09:41
von BartSimpson
Den VC 2005 C++ Compiler gibt es doch im Rahmen der Expressversion umsonst.
Nut das halt OpemMP fehlt, aber da mit soll es eh Problme geben. Ganz davon abgesehen das der VC Compiler deutlich schneller ist, und der Code weniger Probleme macht.