Seite 1 von 1

Windows DLL Suchpfad erweitern

Verfasst: 05.03.2009, 08:21
von Matthias Gubisch
Hallo zusammen

ich habe folgendes Problem
Meine Applikation benutzt QT als als Framework.
Compilieren und Linken funktioniert einwandfrei. starten aus VisualStuio sowohl im Debug als auch im Release Modus ebenfalls.

Wenn ich meine Applikation jezt allerdings ausserhalb von VisualStudio starten will, dann funktioniert der Debugbild einwandfrei und beim Versuch den Releasebuild bekomme ich die Fehlermeldung dass die entsprechenden QT-DLLs nicht gefunden wurden...

Wenn ich die DLLs in das Anwendungsverzeichnis kopiere funktioniert alles einwandfrei, aber das kann ja eigentlich nicht Sinn und zweck der Sache sein.

Hat jemand eine Idee wie ich Windwos sagen kann dass er auch in einem anderen Verzeichniss nach den DLLs suchen soll?
Ein eintrag in die PATH Variable scheint nicht zu helfen :(

Gruesse
Matthias

Re: Windows DLL Suchpfad erweitern

Verfasst: 05.03.2009, 10:21
von Krishty
Du kannst mit LoadLibraryEx() durch Angabe eines absoluten Pfads und des Parameters LOAD_WITH_ALTERED_SEARCH_PATH eine bestimmte DLL laden …

… für Anwendungen, die Probleme mit dem Laden der DLLs haben, wird überdies diese Funktion empfohlen.

Ich sollte noch dazu sagen, dass Windows bei der Suche nach einer DLL einem ganz bestimmten, logischen Muster folgt, das sogar extra für Vista umgestellt wurde … leider habe ich zu lange nicht mehr mit sowas zu tun gehabt um noch zu wissen, wie genau das ablief, und bin zu faul, jetzt danach zu suchen :D Durch das Lesen der Remarks-Abschnitte der verschiedenen Funktionen sollte man auf den Weg, wie Microsoft das ursprünglich gewollt hat, kommen können.

Gruß, Ky

Re: Windows DLL Suchpfad erweitern

Verfasst: 05.03.2009, 10:50
von Matthias Gubisch
LoadLibrayEx hilft mir gar nix
Ich habe ja eigentlich die zugehoerigen statischen Libs eingebunden die das uebernehmen soll

funktioniert ja alles solang ich nicht versuche den releasebuild von ausserhalb des VisualStudio zu starten

die andere funktion werd ich mir mal anschauen

Das ganze soll auf WinXP laufen

Re: Windows DLL Suchpfad erweitern

Verfasst: 05.03.2009, 11:59
von Matthias Gubisch
Die Funktion SetDllDirectory fuktoniert aber auch nur wenn ich die DLL mit LoadLibrary selber lade
Wenn ich sie aber ueber die vorhanden statische Lib (die bei QT ja mitgeliefert ist) beim Programmstart laden will dann hilft mir die Funktion leider auch nix :(

Noch jemand eine andere Idee?

Re: Windows DLL Suchpfad erweitern

Verfasst: 05.03.2009, 13:44
von Schrompf
Wir haben die DLLs schlicht neben die Exe gelegt. Von dort wird sie (nahezu) immer bevorzugt geladen, womit man auch Versionskonflikten mit anderen Installationen aus dem Weg geht.

Re: Windows DLL Suchpfad erweitern

Verfasst: 05.03.2009, 14:03
von Matthias Gubisch
So habe ich das jezt auch gemacht
einfach per Postbuildevent die notwendigen DLLs kopiert
Aber ich wollte sowas eigentlich vermeiden, aber scheint tatsaechlich nicht anders zu gehen wenn man die DLLs nicht selber laedt :(

Naja Windows halt, muss mich wohl damit anfreunden....

Re: Windows DLL Suchpfad erweitern

Verfasst: 10.03.2009, 19:55
von kimmi
Na ja, auch unter Unix legt man die .so entweder direkt neben die Exes oder aber so ab, dass sie im entsprechenden Suchpfad liegen :). Das ist unter Windows nicht viel anders.

Gruss Kimmi

Re: Windows DLL Suchpfad erweitern

Verfasst: 10.03.2009, 20:41
von Matthias Gubisch
Mit dem Unterschied dass unter Unix Problemlos funktioniert wenn man den libpath erweitert...

und unter windows anscheinend nicht und die direkt im systemverzeichnis oder bei der exe stehen muessen....