Dr. Andreas F. Borchert Institut für Angewandte Informationsverarbeitung 2. Dezember 2008
Wolfgang Kaifler Blatt 6
Objektorientierte Programmierung mit C++ (WS 2008)
Abgabetermin: 09.Dezember 2008
In der Vorlesung haben Sie dynamisches nachladen polymorpher Klassen mit dlopen(), dlsym() und dlclose() am Beispiel von Sinus und Kosinus kennen gelernt. (Folien....)
Machen Sie sich mit diesem Programm vertraut, kompilieren Sie es und bringen Sie es zur Ausführung.
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.
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.
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.
std::string command = "g++ -o SayHello.so -fPIC -shared SayHello.C";
system(command.c_string());
Viel Erfolg!
Wolfgang Kaifler
2008-12-02