AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DLL nur Systemweit und automatisch Referenz holen
Thema durchsuchen
Ansicht
Themen-Optionen

DLL nur Systemweit und automatisch Referenz holen

Ein Thema von andimx · begonnen am 16. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#1

DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 21:12
Hallo alle zuzsammen,

Wieder mal eine Frage aus der DLL Welt
Ich hab 2 Programme die gleichzeitig auf eine DLL zugreifen müssen. Jetzt hab ich wirklich alles versucht, sogar das mit der DLL_ATTACH funktionen, etc.. aber die DLL wird pro Program jeweils geladen.

Anbei ein Screenshot mit dem Problem.

Gibt es eine Möglichkeit die DLL wirklich nur einmal zu laden und wenn die DLL entdeckt das sie bereits geladen worden ist, automatisch auf die schon geladene DLL zeigt.

Für die Programme sollte es keinen Unterschied machen. Ich will also sowas wie eine "Intelligente" DLL

Grüße
Andi
Miniaturansicht angehängter Grafiken
rrxpro_141.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 21:16
Sie wird auch nur einmal geladen. Und zwar einmal in den Speichern. Dann wird sie nur noch in den Adressraum der Prozesse gemappt, die sie laden. Dass sie natürlich deswegen auch im Adressraum der anderen Prozesse auftauchen ist klar.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#3

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 21:29
Das hab ich jetzt schon mitbekommen.
Mein Problem ist jetzt folgendes: Intern ist ein Memory Stream (Klasse) in dem ich einen Namespace verwalte. Dieser soll jetzt beschrieben und gelesen werden und zwar von allen Applikationen gleichzeitig die lokal laufen und die DLL geladen haben.
Aber die beiden Applikationen sehen unterschiedliche Namespaces...

Jetzt die Frage. Wenn ich intern in die "initialization" sections die objekte kreiere, sind die dann Global gültig oder wird bei jedem Loadlibrary Befehl die DLL neu initialisiert??
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 22:03
Zitat von andimx:
Aber die beiden Applikationen sehen unterschiedliche Namespaces...
Klar, weil sie ja jeweils im Adressraum des Prozesses liegen, der die DLL geladen hat. Unter C mit dem VC gibt es den sogenannten Shared Memory (http://users.actcom.co.il/~choo/lupg...s/shared-mem.c). Mit Delphi lässt sich das nur sehr umständlich nachbilden. Du solltest eventuell in Erwägung ziehen die DLL mit dem VC zu schreiben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 22:08
Zitat von Luckie:
Unter C mit dem VC gibt es den sogenannten Shared Memory (http://users.actcom.co.il/~choo/lupg...s/shared-mem.c). Mit Delphi lässt sich das nur sehr umständlich nachbilden.

Wow, ich wusste gar nicht, dass VC unter Windows die POSIX-Calls beherrscht. Hast du das getestet?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#6

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 22:18
Ok. Wenn die DLL jetzt einmal geladen ist, jeder Prozess aber seinen eigenen Prozessbereich sieht, dann kommen diese auch nie in die Quere oder?

Was ist mit der BORLNDMM.DLL und ShareMem Unit? Würde die eine Lösung bringen?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 22:31
Ich nicht, aber der Petzold nutz es in seinem Programm zum Sichern der Desktopicon Positionen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 22:34
Zitat von Luckie:
Ich nicht, aber der Petzold nutz es in seinem Programm zum Sichern der Desktopicon Positionen.
Auf welche Frage war das jetzt die Antwort?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#9

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 23:28
Das was du amchen willst ist unter Delphi nicht möglich. Wird in 2 Prozessen die dll geladen, dann sind alle Variabeln etc unterscheidlich. Erzeugst du also einen Stream (Objekt) so existiert dieses nur in dem Prozess wo du es gemacht hast.
Willst du gemeinsame Daten nutzen, musst du es mit MemoryMappedFiles machen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: DLL nur Systemweit und automatisch Referenz holen

  Alt 16. Aug 2006, 23:30
Zitat von Chewie:
Zitat von Luckie:
Ich nicht, aber der Petzold nutz es in seinem Programm zum Sichern der Desktopicon Positionen.
Auf welche Frage war das jetzt die Antwort?
Auf deine.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz