COM DLL erstellen (Einstiegspunkt definieren)

Flens

Erfahrenes Mitglied
Moin,

und schon wieder eine Frage zum Thema DLL. Diesmal COM DLL. :eek:

Meine erstellte DLL in Visual Studio soll nun über regsvr32 registriert werden, so dass auch andere Progs. diese nutzen können.

Das aber nicht, da der Einstiegspunkt fehlt. Jetzt hab ich rausgefunden, dass man dafür ne COM DLL basteln muss und einen Einstiegspunkt festlegen muss. Ist das richtig?

Könnte mir da evtl. einer paar Tipps zu geben?

Komme da nicht weiter.

Flens
 
Mit .NET Assemblies läuft das anders.

Wenn diese DLL von mehreren Programmen genutzt werden soll, bietet sich der GAC (Global Assembly Cache) an. In diesen kannst du deine DLL installieren.

Das ganze kannst du entweder mit dem Tool gacutil machen, oder über Start/Einstellungen/Verwaltung/Microsoft .NET Framework x.x Konfiguration

Damit du eine Assembly im GAC registrieren kannst, muss es eine Strong Named Assembly sein, d.h. sie benötigt einen Public Key.

Genaue Informationen findest du unter:
http://www.devtrain.de/artikel_888.aspx
 
danke für den Tipp.

Ziel soll es sein, eine com dll zu erstellen, die einfach weitergegeben werden kann.

Der Endnutzer will die dll dann einfach über regsvr32 "installieren" und dann soll das laufen.

Das mit GAC ist doch ne etwas anderere Geschichte? Oder verstehe ich das falsch?
 
Eine .NET Assembly als COM DLL? Viel Spaß!

Wozu bitte in .NET programmieren, wenn du dann erst wieder eine COM DLL haben willst? Dann machs gleich mit VB oder C++ (ohne .NET).

Ausserdem vermeidest mit dem GAC das typische DLL-Hell-Geschichterl. Du kannst mehrere Versionen davon installieren und jede Applikation holt sich die DLL die sie braucht.

Weitergabe:
Eine .NET Assembly kannst auch einfach so weitergeben! Eventuell mit Setup, die die DLL automatisch in den GAC schreibt, dann muss der Endnutzer gar nichts tun.

Schlag dir das mit der COM DLL aus dem Kopf!
 
Das hört sich ja alles ganz nett an ;)

Kann dann so eine .Net Assembly genauso genutzt werden wie ne COM DLL?

Dann ist es mir ziemlich egal, was ich nutze.

Das Problem ist einfach, dass meine dll Datenbankfunktionen bereitstellen soll, die von einem anderen Programm und auf einem anderen Rechner genutzt werden soll.

Das "andere Programm" ist aber kein .Net Projekt sondern eine Steuerungssoftware und diese kann nur über einen Com-Server auf die Komponenten bzw. Funktionen zugreifen.

Daher habe ich mich so auf die COM DLL versteift.

Aber wenn das mit den .Net Assembly genauso funktionieren soll, wäre ja schön? :confused:
 
Eine Variante wäre, dass du das Teil von C# nach C++.NET bringst, dort kannst die DLL dann als COM-DLL exportieren. Damit sollte das dann funktionieren. Hier liegt dann allerdings noch auf ein bestimmter Aufwand für dich.
 
ok, dass wäre nee Möglichkeit.

Aber in C++ .Net stehe ich dann wieder vor dem Problem, wie mache ich aus dem Code ne COM DLL mit Einstiegspunkt usw?

Hast da evtl. ein Tipp`?
 
Naja, prinzipiell kannst in einer .NET Assembly (wenn es eine Library ist) keinen Einstiegspunkt definieren.

Wie gesagt, unter C++.NET kannst eine Library als COM-DLL exportieren. Ich habs nur vorhin irgendwo gelesen, weiß selber nicht wie es geht, da ich mit C++ nicht besonders viel mache und noch nicht vor dem Problem gestanden bin.
 

Neue Beiträge

Zurück