AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Frage zu DLL Handling

Ein Thema von TK8782 · begonnen am 14. Jun 2019 · letzter Beitrag vom 14. Jun 2019
Antwort Antwort
TK8782

Registriert seit: 14. Jun 2019
2 Beiträge
 
#1

Frage zu DLL Handling

  Alt 14. Jun 2019, 07:04
Hallo zusammen,

vorneweg....ich selbst bin kein Entwickler, habe aber täglich mit Entwicklern zu tun und wollte mir hier in diesem Forum auch mal Meinungen von anderen Entwicklern einholen.

Nun zu meiner Frage:

Wir entwickeln eine Anwendung mit Delphi 7, die auch verschiedene DLLs benutzt, die ebenfalls von uns entwickelt wurden.
Bisher ist es laut meinen Entwicklern bei der Verwendung der DLLs in unserem Programm noch nicht so, dass die DLLs aus einem von uns definierten Verzeichnis geladen werden, sondern Windows wohl die Reihenfolge der Verzeichnisse, in denen nach der DLL geschaut wird, festlegt.

Unsere Applikation (.exe) liegt auf einem Netzwerkshare. Ich persönlich denke dass es am sinnvollsten ist die von der Applikation verwendeten von uns entwickelten DLLs im selben Verzeichnis der Applikation abzulegen und im Sourcecode zu definieren, dass die DLLs ausschließlich aus diesem Verzeichnis geladen werden. Das muss doch möglich sein oder ist dem nicht so?

Mir wurde von unserer Entwicklung nur der Begriff "DLL-Hell" an den Kopf geworfen. Für mich bedeutet der Begriff, dass es ja mehrere Versionen identischer DLLs (gleicher Name) auf den Systemen geben kann und somit die Abhängigkeiten und Versionen der DLLs nicht mehr zur Applikation passen. Meiner Meinung nach kann man dem doch entgegenwirken wenn die aktuellste Version der DLLs immer im Verzeichnis der Applikation vorliegt und die DLL ausschließlich aus diesem Verzeichnis verwendet wird (unter der Voraussetzung, dass die DLL natürlich eine eigens entwickelte DLL ist, die nur von unserer Applikation verwendet wird). Oder täusche ich mich da?

Ich bin dankbar für jeden hilfreichen Input zu diesem Thema und würde mich über Eure Meinung zu diesem Thema freuen.
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
346 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Frage zu DLL Handling

  Alt 14. Jun 2019, 07:42
Moin,

du brauchst in der Exe nicht den Pfad zu den DLLs angeben, wenn sie im Ausführungsverzeichnis liegen, dort sucht Windows zu allerst. Wenn du es aber partout willst, kannst du bei den DLL-Funktionen den Pfad mit angeben.

Problematisch wird es, wenn die DLLs auch von anderen Programmen benutzt werden, denn dann arbeiten ggf. beide Applikationen mit unterschiedlichen DLL-Ständen und damit hast du die befürchtete DLL-Hell. Du mit dem deinigen Stand, die andere aber mit einem anderen und damit können beide Programme trotz gleicher Eingabe zu unterschiedlichen Ergebnissen führen.

Gruß
  Mit Zitat antworten Zitat
Schokohase

Registriert seit: 17. Apr 2018
777 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Frage zu DLL Handling

  Alt 14. Jun 2019, 08:19
@hsg

Das ist nicht die DLL-Hell.

Das Problem hat man, wenn die DLLs an einer zentralen Stelle liegen und Programm A und Programm B die DLL C benötigen.

Jetzt gibt es ein Update für Programm B und dabei leider zwingend auch ein Update der DLL C. Beide Programme A/B verwenden jetzt diese neue DLL C. Toll. Aber was, wenn sich in der DLL einige Dinge grundlegend geändert haben?

Dann funktioniert Programm B ganz toll und Programm A funktioniert nicht mehr.

Die Lösung ist, die DLL C in das Anwendungsverzeichnis von Programm A und Programm B zu kopieren. Da macht es auch kein Problem mehr, wenn es unterschiedliche Versionen der DLL gibt. Aber ein shared Pool für die DLLs habe ich dann auch nicht mehr.

https://de.wikipedia.org/wiki/DLL-Konflikt
  Mit Zitat antworten Zitat
TK8782

Registriert seit: 14. Jun 2019
2 Beiträge
 
#4

AW: Frage zu DLL Handling

  Alt 14. Jun 2019, 08:34
Danke zunächst mal für die Antworten.

Ergänzend dazu habe ich noch eine weitere Frage.

Und zwar haben wir hier einen Emailclient, der auch eine eigene MAPI.dll ausliefert.
Können MAPI.dlls auch im Programmverzeichnis, also auf einem Netzwerkshare liegen oder müssen diese immer zwingend in einem lokalen Verzeichnis auf dem PC zur Verfügung stehen?

Ich gehe mal davon aus dass es auch hier reicht die DLL im Programmverzeichnis im Netzwerkshare abzulegen und dann in der Registry die ensprechenden Einträge zu hinterlgen, die auf den PFad der zu verwendenden MAPI.DLL zeigen.....oder?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf