DLLs in Projekt richtig verwenden
-
Hallo,
ich arbeite gerade an einem Projekt in dem ich zwei Bibliotheken verwende (konrete: Xerces und XQilla). Diese beiden Bibliotheken werden dynamisch gelinkt, also als DLL eingebunden.Das Problem ist jetzt folgendes: Lasse ich die DLLs einfach im Verzeichnis der Bibliotheken, dann bricht mein Programm mit der Meldung ab dass es die DLLs von XQilla und Xerces nicht finden kann.
Ist ja auch logisch, die DLLs befinden sich ja auch nicht im Arbeitsverzeichnis meines Projekts und auch nicht unter %PATH%.Meine bisherige Lösung ist folgende: Ich kopiere die DLLs einfach in das Arbeitsverzeichnis meines Projekts. Wenn ich also jetzt mein Programm starte, dann wird die DLL gefunden. Funktioniert schon mal, ist allerdings nicht elegant ;).
Gibt es irgendeine Einstellung für den Debugger, die dem Programm mitteilt, dass es auch DLLs in bestimmten Verzeichnissen (in dem Fall also im Pfad von Xerces und XQilla) suchen soll. Dann wäre es nämlich perfekt

-
Nein! Was Du möchtest wird dur PATH geregelt.
Ich habe immer für größere Projekte ein gemeinsames Ausgabeverzeichnis. In dieses werden alle DLLs und EXE Dateien erzeugt. Nicht zu verwechseln mit den intermediate Dateien.
DLLs, die sich letzten Endes nicht verändern, weil sie mehr oder wenige externe statische Bibliotheken sind werden aus den entsprechenden BIN Verzeichnissen aus gesammelt und von einem zentralen Verzeichnis aus auf die Entwicklungsrechner direkt (meist in das System32) Verzeichnis kopiert.
Das machen wir allerdings nur mit den DLLs die auch im Namen eine entsprecehnde Versionnummer haben.Für die Installation allerdings werden sie im immer in das Arbeitsverzeichnis installiert.
Es gibt mehrere Lösungen...
-
Also MSVC hat schon ne Einstellung wo Executables (auch DLLs soweit ich weiss) gesucht werden.
Ist auch dort zu finden wo man z.B. die include Pfade einstellt (Options -> Projects and Solutions -> VC++ Directories -> Show directories for: Executable files).
-
@hustbaer:
Bist Du sicher, dass diese Pfade auch verwendet werden, wenn die Executable geladen wird? Ich sehe diese Pfade für die Executables nur so, dass sie für die Buildprozesse gelten.Das steht auch als Fußnote unten im Dialog:
Path to use when searching for executable files while building a VC++ project. Corresponds to environment variable PATH.
-
Hmpf. Du hast recht (grad ausprobiert).
Wie peinlich...
-
XCooperation schrieb:
Das Problem ist jetzt folgendes: Lasse ich die DLLs einfach im Verzeichnis der Bibliotheken, dann bricht mein Programm mit der Meldung ab dass es die DLLs von XQilla und Xerces nicht finden kann.
Ist ja auch logisch, die DLLs befinden sich ja auch nicht im Arbeitsverzeichnis meines Projekts und auch nicht unter %PATH%.Das ist schlecht. Unter der Windows PATH enviroment varibale sollte auf jeden fall der Pfad zu deinen dll stehen, sonst haut das nicht hin.
Warum legst du die dll's nicht einfach ins system32 Verzeichnis? Da liegen sie doch meistens recht gut.Hilft leider nichts, die musst du in ein Verzeichnis legen das in PATH angegeben ist. Aber damit hast du dann auch schon die Lösung deines Problemes -> schreib einfach die spezifischen Pfade zu deinen dll's in die PATH enviroment variable rein und damit werden sie gefunden. Windows stört das nicht weiter, ist halt mal wieder ein Pfad mehr drin zu den anderen 200. Wie man das macht weist ja sicher, wenn nicht gib bescheid.
Hoffentlich hilfts

Gruß codeman