AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [DLL][COM] Problem mit Laden der DLL
Thema durchsuchen
Ansicht
Themen-Optionen

[DLL][COM] Problem mit Laden der DLL

Ein Thema von andimx · begonnen am 17. Jun 2006 · letzter Beitrag vom 19. Jun 2006
Antwort Antwort
andimx

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

[DLL][COM] Problem mit Laden der DLL

  Alt 17. Jun 2006, 21:07
Hallo alle zusammen,

Ich hab ein kleines oder auch großes Problem. Ich habe in einer DLL ein ComServer (um genau zu sein ein OPC Server) und ich habe mehrere Callback Schleifen in dieser DLL zum update einer Desktop Anwendung die an die DLL angedockt hat (also über Implementierung der DLL-Schnittstelle, nicht über COM oder OPC).

Nun starte ich diese Desktop Anwendung und alles ist perfekt. Nun starte ich einen OPC Client um den Namespace zu bearbeiten, allerdings habe ich jetzt folgendes beobachtet:

Es werden 2 Instanzen der DLL kreiert, also das COM-Objekt lädt die DLL nochmal in den Speicher.
Nun möchte ich aber das die DLL nur einmal geladen wird und das COM Objekt auch nur EINMAL global erzeugt wird.

Gibt es da eine Möglichkeit?


Gruß
Andi
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: [DLL][COM] Problem mit Laden der DLL

  Alt 17. Jun 2006, 21:11
Was spricht dagegen das zwar das COM-Objekt mehrmals erzeugt wird aber dieses per Singleton-Pattern nur mit einem eigentlichen Worker-Objekt arbeitet?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
andimx

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

Re: [DLL][COM] Problem mit Laden der DLL

  Alt 17. Jun 2006, 21:17
Das wäre nicht das Problem, wenn nicht das Worker-Objekt auch mehrmals erzeugt wird und das passiert leider wirklich -> Also die DLL muss mehrmals geladen werden. Less ich die Handles aus hab ich 2 verschiedene DLL handles.

Zum Beispiel befindet sich in der DLL ein Debuuger Thread der intern nachrichten abfangt und in ein Log file schreibt.

Jetzt passiert folgendes: Die Anwendung die an die DLL angedockt ist (entweder durch Implementierung oder COM Creation) schreibt auch das LOG und zwar nur mit den Werten aus der eigenen DLL instanz, d.h. die beiden sehen sich überhaupt net.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: [DLL][COM] Problem mit Laden der DLL

  Alt 17. Jun 2006, 21:26
Beim erstellen der COM-Klasse über den IDE-Wizard hast du doch einige Entscheidungen bezüglich Appartment-Model, ... gemacht. In deiner Implementierungsunit des COM-Interfaces gibt es doch im Initialisierungsabschnit einen Eintrag. Schau mal in der Hilfe nach. Ich glaube duch änderung des Appartmentmodells sollte sich das Lösen lassen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
andimx

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

Re: [DLL][COM] Problem mit Laden der DLL

  Alt 19. Jun 2006, 08:53
Ist kein COM Objekt das mit dem IDE Wizard entwickelt worden ist!
Ist leider eine geschlossene Library..
Ich bin gerade dabei mal die XRTL Library mir anzuschauen, die hat auch einen guten OPC Server drin.
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:50 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