Erstellen eines Modularen Programms, zur Bearbeitung von DatenDateien in C++ unter Linux



  • Hallo C++ler,

    nachdem ich etwas im Internet recherchiert habe, fand ich raus, das wahrscheinlich Shared Objects am ehesten für das Projekt das ich machen muss in Frage kommen.

    Hier eine kurze Erläuterung des Projekts, bzw vorab ein paar Fragen, die die Recherche leider nicht klären konnte.

    Eventl kann ja jemand das ein oder andere beantworten. (Hier habe ich bereits meine Ideen mit einfliessen lassen. Bitte um Kommentar, sollte euch eine bessere möglichkeit einfallen.)

    1. Wie erstellt man Shared Objects (Shared Libraries)(.so) für C++ unter Linux?
    (z.b. in Kdevelop oder auf Shell)

    2. Stimmt es das man aus ganz einfachen Funktionen die man in .c Files
    gepackt hat mittels compilierung .so Files erstellen kann.

    Wenn ja, wie lautet der Compilier Parameter.... bzw ein Beispiel.

    3. Wie funktioniert das mit der Parameterübergabe, wenn ich die .so File
    während dem Programmlauf dynamisch einbinden will. z.b. Codebeispiel

    4. Ziel ist es ein Programm zu entwerfen, das folgendes tut.

    Bei Programmstart, lies eine z.b Textdatei(ConfigDatei) aus.
    In dieser Datei, stehen 4 Dateinamen. 3 davon sind .so Files und eine File beinhaltet Daten.

    Ziel des Hauptprogramms ist es nun.

    Die ConfigDatei in der die 4 Dateinamen stehen auszuwerten, die Namen der drei .so Files herauszufiltern, und diese dann als Shared Libraries zu laden.

    Danach soll der Inhalt der DatenDatei an das erste Modul übergeben werden. Nach Bearbeitung an das nächste Modul weitergegeben werde, und zuletzt vom dritten Modul ausgegeben werden. z.b. speichern in Datei, Ausgabe auf Konsole, usw...

    Ziel ist es eine universelles Framework zu erstellen, das mittels der
    Auswertung der Dateinamen aus der ConfigDatei eine äusserst flexible
    Verarbeitungsengine bereitstellt.

    Probleme gibt es eventl bei der Wertübergabe zwischen den Modulen.
    Gibt es hier so eine Art Heilmittel, mit dem ich alle möglichen Datentypen übergeben kann (z.b. Stream), da die Daten ja immer anders sein können, und die Module immer anders sind, muss es also sehr allgemein sein.

    Es sollen nachträglich Module für andere Datenformate
    nachgeschrieben werden können und diese dann locker über Angabe des .so Filenamens in der Configdatei ins Programm integriert werden können.

    Im Allgemeinen soll ein Programm erstellt werden, das seine Modulenamen, die es benutzen soll über eine Config Datei bekommt.
    Nach laden der Module soll ein Datenpacket in das erste Modul geladen werden, hier findet z.b. eine überprüfung der Daten statt. Nach Überprüfung werden die Daten weiter an das zweite Modul gegeben. Hier findet die Bearbeitung statt. Daten werden, z.b. in der Reihenfolge vertauscht, oder ähnliches...
    Der Datenstrom soll dann weiter an das dritte Modul wandern. Hier geschieht die Ausgabe der Daten. Entweder auf der Console, oder in eine TextDatei, oder direkt an eine andere Schnittstelle, wie z.b. Netzwerk,....

    wird nun z.b. das Verabeitungsmodul in der Configdatei ausgetauscht, so soll beim nächsten start alles erneut durchlaufen, nur eben mit einem anderen Verarbeitungsteil.

    hoffe es hat jeder kapiert was das Tool machen soll.

    mfg UFO

    p.s. bitte nicht gleich zerfleischen, hab schon lange nix mehr in C++ gemacht... und muss nun ein Projekt in C++ unter Linux realisieren.

    p.p.s. wenn ich das richtig seh, dann brauche ich im Hauptprogramm folgende Teile: ConfigDatei laden, Laden der Module, Datendatei in erstes Modul laden, Übergabe der Daten zwischen den Modulen. Ausserdem brauche ich einheitliche Schnittstellen zwischen den Modulen, so das der Datenaustausch klappt...

    p.p.p.s. wäre es angebracht, die Übergabe mittels Bytearrays zu machen, da hierdurch die Probleme mit den verschiedenen Daten an die einzelnen Module abgegeben werden. Somit müsste sich jedes Modul selbst darum kümmern, das es die Daten als Bytearray rauswirft, bzw die Daten als Bytearray einlesen kann (nur eine IDEE)



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • Danke erstmal, der erste Link is net schlecht...

    der Zweite... is noch ziemlich Lückenhaft...

    Abgesehen von den fragen die noch offen sind... hier eine weitere:

    Habe was von ELF Loader im zusammenhang mit Dynamisch geladenen Shared Libs gelesen.... was is das, braucht man das? Macht das Probleme?

    thx



  • UFOSWORLD schrieb:

    der Zweite... is noch ziemlich Lückenhaft...

    http://www.kdevelop.org/index.html?filename=3.4/faq.html
    Punkt 3

    UFOSWORLD schrieb:

    Abgesehen von den fragen die noch offen sind

    zuviel text

    UFOSWORLD schrieb:

    Habe was von ELF Loader im zusammenhang mit Dynamisch geladenen Shared Libs gelesen.... was is das, braucht man das? Macht das Probleme?

    http://de.wikipedia.org/wiki/Executable_and_Linking_Format


Log in to reply