Erstellen und Verwenden einer verwalteten Assembly (C++)
Aktualisiert: November 2007
Der nächste Typ von Bibliothek, den Sie erstellen, ist eine verwaltete Assembly. Die Verwendung verwalteter Assemblys stellt eine gute Möglichkeit zur Wiederverwendung von Code dar. Anstatt die gleichen Routinen in jedem von Ihnen erstellten Programm erneut zu implementieren, schreiben Sie die Routinen einmal und verweisen darauf in allen Anwendungen, die diese Funktionen benötigen.
In dieser exemplarischen Vorgehensweise werden folgende Themen behandelt:
Erstellen eines neuen Klassenbibliotheksprojekts
Hinzufügen einer Klasse zur Klassenbibliothek
Erstellen einer Anwendung, die auf die Klassenbibliothek verweist
Verwenden von Funktionen der Klassenbibliothek in der Konsolenanwendung
Ausführen der Anwendung
Vorbereitungsmaßnahmen
In diesem Thema wird davon ausgegangen, dass Sie die Grundlagen der Programmiersprache C++ beherrschen. Wenn Sie gerade die ersten Schritte beim Erlernen von C++ machen, empfehlen wir "C++ Beginner's Guide" von Herb Schildt, online verfügbar unter https://go.microsoft.com/fwlink/?LinkId=115303.
So erstellen Sie ein neues Klassenbibliotheksprojekt
Wählen Sie im Menü Datei die Option Neu aus, und klicken Sie dann auf Projekt....
Wählen Sie im Bereich Projekttypen unter Visual C++ die Option CLRaus. Dadurch wird ein Projekt für die Ausführung in der Common Language Runtime erstellt.
Wählen Sie im Bereich Vorlagen den Eintrag Klassenbibliothek aus.
Wählen Sie einen Namen für das Projekt aus, z. B. MathFuncsAssembly, und geben Sie ihn in das Feld Name ein. Wählen Sie einen Namen für die Projektmappe aus, z. B. ManagedAssemblies, und geben Sie ihn in das Feld Projektmappenname ein.
Klicken Sie auf OK, um das Projekt zu erstellen.
Wenn neue Projekte erstellt werden, werden sie standardmäßig so eingerichtet, dass sie vorkompilierte Header verwenden. Um die Verwendung vorkompilierter Header zu deaktivieren, wählen Sie im Menü Projekt die Option Eigenschaften aus. Erweitern Sie den Knoten Konfigurationseigenschaften, erweitern Sie den Knoten C/C++, und wählen Sie dann Vorkompilierte Header aus. Wählen Sie in der Dropdownliste neben Vorkompilierten Header erstellen/verwenden die Option Vorkompilierte Header nicht verwenden aus. Klicken Sie auf OK, um die Änderungen zu speichern. Weitere Informationen zu vorkompilierten Headern finden Sie unter Erstellen vorkompilierter Headerdateien.
So fügen Sie der Klassenbibliothek eine Klasse hinzu
Nach dem Erstellen einer neuen CLR-Klassenbibliothek wird im Assistenten eine einfache Klasse für Sie erstellt. Die Headerdatei und die Quelldatei erhalten denselben Namen, den Sie zuvor für das Projekt ausgewählt haben. In diesem Beispiel erhalten sie die Namen MathFuncsAssembly.h und MathFuncsAssembly.cpp.
Ersetzen Sie den vorhandenen Code in MathFuncsAssembly.h durch eine einfache Klasse mit dem Namen MyMathFuncsAssembly, die zur Ausführung der geläufigen mathematischen Operationen wie Addition, Subtraktion, Multiplikation und Division dient. Der Code sollte etwa folgendermaßen aussehen:
// MathFuncsAssembly.h using namespace System; namespace MathFuncs { public ref class MyMathFuncs { public: // Returns a + b static double Add(double a, double b); // Returns a - b static double Subtract(double a, double b); // Returns a * b static double Multiply(double a, double b); // Returns a / b // Throws DivideByZeroException if b is 0 static double Divide(double a, double b); }; }
Implementieren Sie die Funktionalität von MyMathFuncs in der Quelldatei. Der Code sollte etwa folgendermaßen aussehen:
// MathFuncsAssembly.cpp // compile with: /clr /LD #include "MathFuncsAssembly.h" namespace MathFuncs { double MyMathFuncs::Add(double a, double b) { return a + b; } double MyMathFuncs::Subtract(double a, double b) { return a - b; } double MyMathFuncs::Multiply(double a, double b) { return a * b; } double MyMathFuncs::Divide(double a, double b) { if (b == 0) { throw gcnew DivideByZeroException("b cannot be zero!"); } return a / b; } }
Kompilieren Sie die Klassenbibliothek, indem Sie im Menü Erstellen die Option Projektmappe erstellen auswählen. Dadurch wird eine DLL (Dynamic Link Library) erstellt, die von anderen Programmen verwendet werden kann. Weitere Informationen zu DLLs finden Sie unter DLLs.
So erstellen Sie eine Anwendung, die auf die Klassenbibliothek verweist
Um eine Anwendung zu erstellen, die auf die soeben erstellte Klassenbibliothek verweist und diese verwendet, wählen Sie im Menü Datei die Option Neu und anschließend Projekt....
Wählen Sie im Bereich Projekttypen unter Visual C++ die Option CLRaus. Dadurch wird ein Projekt für die Ausführung in der Common Language Runtime erstellt.
Wählen Sie im Bereich Vorlagen den Eintrag CLR-Konsolenanwendung aus.
Wählen Sie einen Namen für das Projekt aus, z. B. MyExecRefsAssembly, und geben Sie ihn in das Feld Name ein. Wählen Sie in der Dropdownliste neben Projektmappe die Option Hinzufügen aus. Dadurch wird das neue Projekt in dieselbe Projektmappe eingefügt, in der sich auch die Klassenbibliothek befindet.
Klicken Sie auf OK, um das Projekt zu erstellen.
Wenn neue Projekte erstellt werden, werden sie standardmäßig so eingerichtet, dass sie vorkompilierte Header verwenden. Um die Verwendung vorkompilierter Header zu deaktivieren, wählen Sie im Menü Projekt die Option Eigenschaften aus. Erweitern Sie den Knoten Konfigurationseigenschaften, erweitern Sie den Knoten C/C++, und wählen Sie dann Vorkompilierte Header aus. Wählen Sie in der Dropdownliste neben Vorkompilierten Header erstellen/verwenden die Option Vorkompilierte Header nicht verwenden aus. Klicken Sie auf OK, um die Änderungen zu speichern. Weitere Informationen zu vorkompilierten Headern finden Sie unter Erstellen vorkompilierter Headerdateien.
So verwenden Sie Funktionen der Klassenbibliothek in der Konsolenanwendung
Nach dem Erstellen einer neuen CLR-Konsolenanwendung wird ein Programm für Sie erstellt, das einfach "Hello World" auf der Konsole ausgibt. Die Quelldatei erhält denselben Namen, den Sie oben für das Projekt ausgewählt haben. In diesem Beispiel erhält die Quelldatei den Namen MyExecRefsAssembly.cpp.
Um die in der Klassenbibliothek erstellten mathematischen Routinen zu verwenden, müssen Sie auf die Bibliothek verweisen. Wählen Sie dazu im Menü Projekt die Option Verweise... aus. Erweitern Sie im Dialogfeld Eigenschaftenseiten den Knoten Allgemeine Eigenschaften, wählen Sie Verweise aus, und klicken Sie dann auf die Schaltfläche Neuen Verweis hinzufügen. Weitere Informationen zum Dialogfeld Verweise… finden Sie unter Framework und Verweise, Allgemeine Eigenschaften, Dialogfeld '<Projektname>-Eigenschaftenseiten'.
Das Dialogfeld Verweis hinzufügen wird angezeigt. Dieses Dialogfeld listet alle Bibliotheken auf, auf die Sie verweisen können. Die Registerkarte .NET listet die Bibliotheken auf, die in .NET Framework enthalten sind. Die Registerkarte COM listet alle COM-Komponenten auf dem Computer auf. Auf der Registerkarte Projekt werden alle Projekte in der aktuellen Projektmappe und sämtliche darin enthaltenen Bibliotheken aufgelistet. Wählen Sie auf der Registerkarte ProjekteMathFuncsAssembly aus, und klicken Sie dann auf OK. Weitere Informationen zum Dialogfeld Verweis hinzufügen finden Sie unter Dialogfeld "Verweis hinzufügen".
Hinweis: Sie können direkt in der Quelldatei auf eine Assembly verweisen, indem Sie eine #using-Direktive wie in #using <MathFuncsAssembly.dll> verwenden. Weitere Informationen über diese Direktive finden Sie unter The #using Directive.
Nun können Sie die MyMathFuncs-Klasse in dieser Anwendung verwenden. Ersetzen Sie in MyExecRefsAssembly.cpp den Inhalt der Dateifunktion durch folgenden Code:
// MyExecRefsAssembly.cpp // compile with: /clr /FUMathFuncsAssembly.dll using namespace System; int main(array<System::String ^> ^args) { double a = 7.4; int b = 99; Console::WriteLine("a + b = {0}", MathFuncs::MyMathFuncs::Add(a, b)); Console::WriteLine("a - b = {0}", MathFuncs::MyMathFuncs::Subtract(a, b)); Console::WriteLine("a * b = {0}", MathFuncs::MyMathFuncs::Multiply(a, b)); Console::WriteLine("a / b = {0}", MathFuncs::MyMathFuncs::Divide(a, b)); return 0; }
Erstellen Sie die ausführbare Datei, indem Sie im Menü Erstellen den Befehl Projektmappe erstellen auswählen.
So führen Sie die Anwendung aus
Stellen Sie sicher, dass MyExecRefsAssembly als Standardprojekt ausgewählt ist. Wählen Sie im Projektmappen-Explorer das Projekt MyExecRefsAssembly aus, und wählen Sie dann im Menü Projekt die Option Als Startprojekt festlegen aus.
Um das Projekt auszuführen, wählen Sie im Menü Debuggen die Option Starten ohne Debuggen aus. Die Ausgabe sollte folgendermaßen aussehen:
a + b = 106.4 a - b = -91.6 a * b = 732.6 a / b = 0.0747474747474748
Nächste Schritte
Zurück:Erstellen und Verwenden einer statischen Bibliothek (C++) | Weiter:Die nächsten Schritte (C++)