Dr. Andreas F. Borchert Institut für Angewandte Informationsverarbeitung 2. Dezember 2008
Wolfgang Kaifler Blatt 6


Uni Logo



Objektorientierte Programmierung mit C++ (WS 2008)


Abgabetermin: 09.Dezember 2008

1 Dynamischer Polymorphismus (10 Punkte)

In der Vorlesung haben Sie dynamisches nachladen polymorpher Klassen mit dlopen(), dlsym() und dlclose() am Beispiel von Sinus und Kosinus kennen gelernt. (Folien....)

1.1 Aufgabe 1 (2 Punkte)

Machen Sie sich mit diesem Programm vertraut, kompilieren Sie es und bringen Sie es zur Ausführung.

1.2 Aufgabe 2 (4 Punkte)

Erstellen Sie nun zwei weitere Programmbibliotheken. Die erste Bibliothek SayHello soll einem übergebenem Namen den String ,,Say Hello`` hinzufügen. Erstellen Sie eine weitere Bibliothek getDir, welche den Verzeichnisinhalt eines übergebenen Pfades ausgibt.

1.3 Aufgabe 3 (4 Punkte)

Im Folgenden soll nun das Hauptprogramm modifiziert werden. Fügen Sie eine Möglichkeit hinzu, zur Laufzeit aus dem Hauptprogramm heraus eine Bibliothek zu kompilieren, einzubinden und zur Ausführung zu bringen.

Hinweise:

Dynamische Bibliotheken werden mit folgendem Kommando kompiliert: g++ -o SayHello.so -fPIC -shared SayHello.C

Ein externes Kommando kann mit system() aus <iostream> ausgeführt werden. Dabei erwartet system() einen C-String als Parameter. Von einem string-Objekt kann dies mit c_string erzeugt werden.

Beispiel:

std::string command = "g++ -o SayHello.so -fPIC -shared  SayHello.C";
system(command.c_string());

Viel Erfolg!



Wolfgang Kaifler 2008-12-02