Unterschied zwischen ActiveX Control und *.dll?

SchindlerD

Grünschnabel
Hallo Leute!

Ich habe eine recht allgemeine Frage zu den verschiedenen Möglichkeiten, "fremden" Code in eigene Programme zu integrieren. Leider habe ich darüber in meinem C-Grundkurs nichts gelernt... (Übrigens schreibe ich in C++ unter VS 2005, momentan an einem Windows-Forms-Projekt)

Ich habe eine Anwendung geschrieben, in der *.dlls und ActiveX Controls verwendet werden. Dabei ist mir aufgefallen, dass bei Verwendung der ActiveX-Komponente automatisch *.dlls dafür in den release-Ordner meines Visual Studio 2005-Projektes erstellt werden. Wo liegt also der Unterschied, wenn man *.dlls direkt anspricht oder über ActiveX? Und weshalb kann die ActiveX Control in managed Code problemlos verwendet werden während beim Linken von *.dlls gemeckert wird?

Außerdem habe ich gelesen, das diese ActiveX Controls wohl etwas mit Browsern zu tun haben. Also besser gesagt, dass damit aktive Inhalte in beispielsweise dem Internetexplorer dargestellt werden. Mein Programm ist aber eine Forms-Anwendung, hat also mit dem Explorer nichts zu tun. Grafisch geschieht überhaupt nichts aufgrund dieser Control, es wird ein AD-Wandler damit abgefragt... Wird der Browser trotzdem irgendwie verwendet? Wie soll ich mir (bzw. meinem Prof.) die Verwendung von einer ActiveX Control in meinem Programm erklären?

Gibt es noch andere Methoden, Bibliotheken zu importieren?

Ich hoffe einer von euch kann mich in die Geheimnisse der "Fremdbibliotheken" einweihen. Für Links bin ich natürlich auch zu haben.

Viele Grüße
Daniela
 
Also ich verstehe leider nix von C++ Managed Code und .NET aber ich will mal versuchen das ganz allgemein zu erklären:

Eine DLL (Dynamic Link Library) ist eine Bibliothek die zur Laufzeit eingebunden wird, also dynamisch nachgeladen, wie ja der Name sagt.
Diese DLL kann jetzt beispielsweise eine "reine" C-DLL sein, also ein C-Interface enthalten um dort einfach Code auszulagern. Sie kann aber auch C++ Klassen auslagern die dann von Anwendungen verwendet werden können.

Ein ActiveX Object oder Control kann natürlich auch in einer DLL ausgelagert sein, allerdings wird dieses Control oder Object nicht einfach über eine Funktion aufgerufen sondern wird über COM erzeugt. D.h. die DLL "muss" (ausnahmen bestätigen die Regel) registriert werden und somit entstehen Einträge in der Registry die den Namen und die UID (Unique ID) des Objectes oder Controls beinhalten.

Wie das ganze jetzt in C++ Managed Code eingebunden wird, kann ich dir leider nicht sagen.
 
Zurück