AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [COM/DLL] COM Objekt aus Delphi DLL in VB nicht sichtbar
Thema durchsuchen
Ansicht
Themen-Optionen

[COM/DLL] COM Objekt aus Delphi DLL in VB nicht sichtbar

Ein Thema von andimx · begonnen am 26. Jan 2007 · letzter Beitrag vom 27. Jan 2007
Antwort Antwort
andimx

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

[COM/DLL] COM Objekt aus Delphi DLL in VB nicht sichtbar

  Alt 26. Jan 2007, 22:02
Hallo alle zusammen,

Ich bin wieder auf ein Mysterium der Com-Programmierung gestoßen.

Ich hab in Delphi eine DLL geschrieben, in der 5 Threads erstellt werden. Dies sind 5 Workthreads in denen verschiedenen Kommunikationsprotokolle abgearbeitet werden.

Nun gibt es auch eine Wrapper Klasse die unterschiedliche Kommunikationen zuläßt, sprich es gibt eine Basisklasse und dann x Ableitungen, u.a. eine XML über TCP/IP KLasse, eine reine TCP/IP Klasse und eben auch eine Klasse um OPC zu betreiben. Die Klasse OPC generiert nun das OPC COM Objekt und wenn ich die DLL in einem Delphi Programm einbinde, laufen die Threads und alles drum und dran funktioniert.

Jetzt gibt es aber nicht nur Delphi sondern auch VB, LabView, etc... im aktuellen Problemfall haben wir genau diese beiden.

Die DLL läßt sich perfekt in LabView wie auch in VB laden und man kann den VersionString ziehen, etc.. auch kann man werte in den OPC Namespace reinschreiben und alles funktioniert tadelos, bis auf folgendes:

Die Threads in der DLL steuern natürlich auch die "WriteItem" funktion an (so heißt die Funktion in der DLL um Werte in den Namespace zu schreiben). Wird WriteItem von der Delph, VB oder LabView Applikation aufgerufen, funktioniert es.. wird die DLL jetzt aber in VB oder in Labview eingebunden und wird die Funktion aber von einem der WorkerThreads in der DLL aufegrufen.. schwupp.. ist das COM Objekt nicht mehr sichtbar, sprich es gibt es nicht mehr.

Jeder der einzelnen Threads werden übrigends initialisert mit:
[delphi]
CoInitializeEx(nil, COINIT_MULTITHREADED);
[delphi/]

Das hat mich schonmal 4 Monate gekostet, nach dem das drin war, lief alles. Nur läuft es halt nicht in VB oder in LabView.... das OPC COM Objekt ist einfach nicht sichtbar.

Kennt jemand das Problem das COM Objekte in DLL's nicht mehr für die DLL selbst sichtbar sind, sondern nur im Context der Hostapplikation da sind.


Grüße
Andi
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: [COM/DLL] COM Objekt aus Delphi DLL in VB nicht sichtbar

  Alt 27. Jan 2007, 20:21
Zitat von andimx:
Das hat mich schonmal 4 Monate gekostet, nach dem das drin war, lief alles. Nur läuft es halt nicht in VB oder in LabView.... das OPC COM Objekt ist einfach nicht sichtbar.
Nicht sichtbar in der Liste verfügbarer COM-Klassen? Dann versuche mal "regsvr32 <dllname>".

Zitat von andimx:
Kennt jemand das Problem das COM Objekte in DLL's nicht mehr für die DLL selbst sichtbar sind, sondern nur im Context der Hostapplikation da sind.
Eine DLL besitzt ja auch keine Threads, kann also logischerweise keine COM-Klassen intanziieren und ergo auch keine "sehen".
  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 11:51 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