Also, der aktuelle Stand ist im Anhang. Das Shell-Skript build.sh kann mit ./build.sh lib dazu verwendet werden, die Shared Library zu erstellen, mit ./build.sh app für die Demo-Anwendung und ./build.sh test baut das Programm, zum Testen der Demo.hpp und Demo.cpp, in dem der Code direkt eingebunden wird. Dabei habe ich aberin der Demo.cpp die main-Funktion auskommentiert.
Kurz:
Code: Alles auswählen
./build.sh lib
./build.sh app
./main
Im Ordner core gibt es eine LibraryWrapper.hpp, mit der Template-Klasse LibraryWrapper<T>, die als Typparameter die zu ladende Klasse (Demo aus der Demo.hpp) bekommt. In der main.cpp habe ich eine Klasse WrappedDemo implementiert, die auf LibraryWrapper<Demo> basiert und Wrapper-Funktionen für die öffentlichen Member enthält.
Das mit den gewrappten Methoden und Gettern / Settern ist noch etwas umständlich, funktioniert aber erstmal. Hat jemand eine Idee, wie ich das ohne mache? LibraryWrapper<T> von T abzuleiten sollte die Member direkt zur Verfügung stellen, allerdings bekomme ich dann den Konstruktor nicht korrekt aufgerufen.
Außerdem habe ich bisher noch keine gute Idee, wie ich verschiedene Konstruktoren am besten implementiere. Bisher fällt mir nur ein, verschiedene "Konstruktor-Funktionen" (wie create_Demo_int (Konstruktor mit 1x int), create_Demo_int_int (Konstruktor mit 2x int), create_Demo_int_float (Konstruktor mit 1x int und 1x float) usw.) zu implementieren, und in WrappedDemo mehrere Konstruktoren zu implementieren, die verschiedene "Konstruktor-Funktionen" aus der Lib laden und mit Parametern füttern. Dabei müsste ich allerdings umgehen, dass LibraryWrapper<T> den Standardkonstruktor (sei jetzt mal create_Demo) aufzurufen... Hat da jemand eine Idee?
LG Glocke
/EDIT: Wahlweise: https://github.com/Glocke89/sharedclasses