Bibliothek mit graphischem Frontend einbinden
-
Hallo
In meinem Projekt habe ich vor ein Programm so zu programmieren dass es einer größtmöglichen Modularität unterliegt. Des Weiteren soll es plattforumunabhängig sein.
Um das zu erreichen hab ich mir ein Schema ausgedacht mit dem ich der Meinung bin das zu erreichen.
Der Programm-Core soll mit Hilfe der boost-libraries plattformunabhängig werden und dein grafisches Frontend will ich mit QT erstellen.Soweit so gut.
Nun hab ich angefangen die Grafik zu erstellen und als Bibliothek compiliert. Da ich unter Windows programmiere ist das dann erst mal ne dll. Innerhalb dieser Bibliothek hab ich eine Klasse UI die mir die Grafik aufbaut wenn ich sie instanziiere.
Meine Frage ist: Wie kann ich die Biliothek C++-Standard konform in meinen Coreteil einbinden um ein Objekt der Klasse UI instanziieren zu können?
Danke schon mal für eure Antworten.
Grüße
DaimonionPS.: Kann man hier keine Attachments einbinden?
-
Wieso muss es ne DLL sein, ne .lib ist soweit ich weiss für alle Plattformen geeigent bzw. auf allen Plattformen erstellbar. Und weil DLLs eben Windowszeug sind kann masn sie nur mit winapi funktionen zur laufzeit laden.
-
Hallo
In wxWidgets gibt es entsprechende Funktion die das plattformabhängige Laden einer Library wrappen. Dadurch bleibt der Code plattformunabhängig.
Möglicherweise bietet QT ähnliches an. Wenn nicht must du eben selber einen einfachen Wrapper schreiben. Da sollten ja zwei Funktionen reichen./Edit :
PS.: Kann man hier keine Attachments einbinden?
Weil Marc++us nicht wegen rechtlicher und finanzieller Auswirkungen eine Tauschbörse aus seinem Forum machen will.
bis bald
akari
-
Danke für eure Antworten.
@Balmung
Okay, eine Lib tuts natürlich auch.Ich dachte nur an dynamische Linkung, weil die lib um einiges größer ist als die dll. (8 MB gegen 8 KB). Unter Linux würde die dll ja dann als .so (shared Object) kompiliert werden...
Okay, eine DLL kann man unter Win nur mit Winapi funktionen laden. Soweit klar. Meine Gedanken dazu sind: Da ich ja unter Linux das Projekt ebenso kompiliere, da dann auch dynamische Bibliotheken erzeuge, kann ich durch den Einsatz vom Präprozessor auch die unterschiedliche Weise des Ladens eines dynamischen Objektes bewerkstelligen. --> spricht allerdings gegen Standard C++
Wie ist denn der Standard Weg zum laden der statischen lib-Bibliothek?
@akari
Ich will ja nicht innerhalb von Qt die Bibliothek laden, sondern innerhalb des Core teiles, der nicht auf QT basieren soll.Grüße
Daimonion
-
Hallo
daimonion schrieb:
Okay, eine DLL kann man unter Win nur mit Winapi funktionen laden. Soweit klar. Meine Gedanken dazu sind: Da ich ja unter Linux das Projekt ebenso kompiliere, da dann auch dynamische Bibliotheken erzeuge, kann ich durch den Einsatz vom Präprozessor auch die unterschiedliche Weise des Ladens eines dynamischen Objektes bewerkstelligen. --> spricht allerdings gegen Standard C++
Nein ist nicht gegen den Standard. Auch in C++ ist der Präprozessor wichtig. Grad für solche Sachen wie plattformunabhängigkeit.
C++ kennt jedenfalls keine Funktionen zum Laden von Librarys.bis bald
akari
-
akari schrieb:
C++ kennt jedenfalls keine Funktionen zum Laden von Librarys.
Ah, okay. Das hilft mir schon mal weiter... Da werd ich mich mal durch die Winapi, Forenbeiträge und Hilfen wühlen wie ich, vorerst, unter Win die dll/lib in mein Programm reinbekomme.
Danke
Gruß
Daimonion
-
Eine lib bekommst du mit dem Linker rein.
Nur so als Tipp bevor du stundenlang die msdn durchwühlst

Ich sehe keinen Vorteil darin deinen gesamtes Programm in eine Bibliothek zu packen und dann einen Loader dafür zu schreiben. Schreib das Programm direkt als normale Anwendung, dann bekomst du auch keine Probleme.
Und QT bietet dir QLibrary um zur Laufzeit Bibliotheken nachzuladen.
-
Ja ich habe heute morgen nochmal mit einem Kollegen darüber diskutiert und der riet mir genau das selbe. Man merkt halt doch ganz schnell wenn man noch niht so firm in der Entwicklung größerer Applikationen ist.
Grüße
Daimonion