Programmfunktionen in Module verpacken



  • Klingt für mich nach dynamisch geladenen DLLs.
    Du kannst eine Basisklasse (aka Interface) definieren. Von der abgeleitet machst du dann deine Implementierungen in unterschiedliche DLLs, bei denen du die entsprechenden Funktionen exportierst (https://msdn.microsoft.com/de-de/library/a90k134d.aspx). Die DLLs kannst du dann dynamisch laden mit LoadLibrary() (https://msdn.microsoft.com/en-us/library/windows/desktop/ms684175(v=vs.85).aspx). Das ganze ist jetzt Windows spezifisch, wie das bei Linux Systemen aussieht weiß ich grade nicht.



  • Das geht nicht. C++ ist halt keine Skriptsprache. Grundsätzlich lässt sich das mit Betriebssystemmitteln lösen. Dazu musst du die Module als dll/dylib/so erzeugen und zur Laufzeit laden. Qt macht das z.B. mit den Plugins. Für Unix könntest du z.B. dlopen verwenden.



  • @dp280678 sagte in Programmfunktionen in Module verpacken:

    @hustbaer Ich verwechsel da nichts

    Doch. C++ mit einer Skriptsprache.
    Und das sog. "Execute-Pattern" mit etwas was jemand ausserhalb der PHP Ecke kennen könnte (bzw. überhaupt als Pattern bezeichnen - ich würde das jetzt eher ein Idiom nennen).



  • Jetzt unabhängig von der konkreten Frage... Es ist löblich, dass du dir Gedanken über Modularisierung machst, aber dir ist schon klar, dass das alles nicht ganz so einfach ist und beliebig komplex werden kann und es da schon auch fertige Lösungen gibt? Ich kenn mich mit sowas nicht wirklich aus, aber es gibt z.B. Nagios mit wahrscheinlich tausenden fertigen Plugins. Gibt auch zig Alternativen zu Nagios. Und auch sehr teure kommerzielle Software. Das jetzt selber zu entwickeln ist nur sehr bedingt sinnvoll.



  • @mechanics sagte in Programmfunktionen in Module verpacken:

    Das jetzt selber zu entwickeln ist nur sehr bedingt sinnvoll.

    Das hängt davon ab, was man will. Wenn man sich selber weiterentwickeln will und etwas dazu lernen will, kann es nicht schaden, etwas selber zu bauen, anstatt die vorgefertigte Lösung zu verwenden. Man kann z.B. auch vorgefertigte Compiler für Skriptsprachen verwenden, aber dabei lernt man halt nix über Compilerbau. Das lernt man nur wenn man den steinigen Weg des Selbermachens geht.



  • Ja, wenn es ein Hobby Projekt ist, bei dem man was lernen möchte, dann gerne, sowas hatte ich früher auch mal angefangen (nur etwas größer)...
    Das ging nur aus der Frage nicht hervor und das sieht für mich nicht nach einem Lernprojekt aus.



  • Vielen lieben Dank für all eure Zeit und eure Antworten 😄

    Ich gebe @Mechanics recht, dass es nur bedingt sinnvoll ist, wenn es so komplex ist. Ich habe mir das mit den DLLs und SOs angesehen, was @Schlangenmensch und @manni66 vorgeschlagen haben. Das sieht für meine Zwecke recht vielversprechend aus.

    Das ganze ist zwar teilweise ein Lernprojekt, aber ich habe mich natürlich auch schlau gemacht, wie man fertige Lösungen erweitern kann und ob ich da ausreichend Flexibilität für meine speziellen Zwecke habe.

    Letzten Endes läuft es für mich darauf hinaus zwischen zwei Varianten zu entscheiden:

    1. Ich nehme mir die Zeit, arbeite mich ein und mache es dann selbst bei voller Flexibilität

    2. Ich entwickel Erweiterungen für bestehende Softwarelösungen (mit entsprechenden Einschränkungen) und spare etwas Zeit

    Ich werde mich wahrscheinlich dafür entscheiden es erst selber zu versuchen (schon alleine um mich weiterzubilden, wie @It0101 geschrieben hat) und nur wenn ich es wirklich nicht hinbekommen sollte, werde ich auf fertige Lösungen zurückgreifen.

    Wie schon weiter oben geschrieben, ist C++ absolut nicht meine Kernkompetenz. Ich bilde mich aber immer gerne Weiter und gerade C++ ist für mich aktuell recht spannend.



  • @dp280678
    Naja wenn du dich entscheidest, den steinigen Weg zu gehen, kannst du da ja auch noch varierieren. Man muss ja nicht alles selber machen. Wenn man ohnehin eine Anwendung modularisiert, also in kleine Unteraufgaben unterteilt, kann man ja auch für einzelne Unteraufgaben nach fertigen Lösungen suchen und muss dann nicht jedes Rad neu erfinden, sondern nur manche.
    Und für die Unteraufgaben, die du selber bauen willst, kannst du dich ja dann bei Fragen immer wieder gern hier im C++-Forum melden und dir wird garantiert geholfen 🙂



  • @dp280678

    1. Ich nehme mir die Zeit, arbeite mich ein und mache es dann selbst bei voller Flexibilität

    Das würde ich nur bedingt unterschreiben. Je, wenn man selber etwas schreibt, ist man meist ziemlich flexibel, zumindest in Hinsicht auf das, was man sich vorstellt.
    Aber wenn man etwas fertiges nimmt, ist die Wahrscheinlichkeit hoch, dass es noch weitere Features bietet, oder sich mit anderen Systemen kombinieren lässt, an die man grad nicht denkt. Keine Ahnung, sagen wir mal, du willst plötzlich irgendwelche fancy Diagramme haben, die die Stabilität deiner Systeme im Jahresverlauf auf 20 verschiedene Arten visualisieren. Viel Spass beim selber schreiben. Die Wahrscheinlichkeit ist aber hoch, dass es sowas für Nagios schon gibt.



  • @it0101 sagte in Programmfunktionen in Module verpacken:

    Das hängt davon ab, was man will. Wenn man sich selber weiterentwickeln will und etwas dazu lernen will, kann es nicht schaden, etwas selber zu bauen, anstatt die vorgefertigte Lösung zu verwenden. Man kann z.B. auch vorgefertigte Compiler für Skriptsprachen verwenden, aber dabei lernt man halt nix über Compilerbau. Das lernt man nur wenn man den steinigen Weg des Selbermachens geht.

    Vorgefertigte Compiler für Skriptsprachen... in wie weit sind die vorgefertigt 🤡 das würde mich interessieren, wusste nichtmal das es sie gibt :face_savouring_delicious_food: also kläre mich bitte auf 🤓



  • @ascharan
    guckst du hier:

    https://docs.python.org/2/extending/embedding.html

    Damit kannst du pythoncode in C/C++ ausführen.
    Gibts bestimmt für andere Sprachen auch und es gibt hier auch jede Menge Spezis die sich mit sowas auskennen. Ich gehöre nicht dazu 😉



  • @it0101 Ahh... sowas war gemeint.

    Hatte irgendwie sowas im kopf wie zbsp. Ich hab ein script mit eigener Syntax und brauch den Compiler nur noch beibringen was er damit machen soll. 🤓

    Weis zwar nicht wieso ich diesen gedanken hatte :smiling_face_with_open_mouth_cold_sweat: aber naja 🤡


Anmelden zum Antworten