Erstellen eigener Bibliotheken

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
abap_true
Beiträge: 25
Registriert: Di Feb 05, 2013 1:38 pm
Wohnort: Köln

Erstellen eigener Bibliotheken

Beitrag von abap_true » Mi Apr 17, 2013 7:59 am

Hallo zusammen,

ich habe nach dem Konsum des kapitels "Projekte" aus dem C-Tutorial, eine Library für ein paar MySQL Funktionen erstellt.
Die Libray besteht aus den Dateien "mysql_base.h" und "mysql.c" und ich würde sie gerne auch in anderen Projekten verwenden.
Ziel ist auch die Lib nur an einer Stelle zu pflegen.

Wie wäre hier die übliche Vorgehensweise?

Im Vorraus vielen Dank für Eure Hilfe!
chris

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Erstellen eigener Bibliotheken

Beitrag von Xin » Mi Apr 17, 2013 9:24 am

abap_true hat geschrieben:Wie wäre hier die übliche Vorgehensweise?
Was ist schon üblich...?

Ich habe ein Framework, was derzeit soviel heißt wie ich habe unzählige Header und Quellcode-Dateien in unzählingen Verzeichnissen. Diese unzähligen Verzeichnisse liegen bei mir in einem Sammelverzeichnis. Jedes Projekt kennt den Pfad zu diesen Verzeichnis und darf sich daraus bedienen. Ein Projekt initialisiert und konfiguriert in der Regel nur ein paar Daten und ruft dann die entsprechende Klasse aus dem Framework auf. Darunter sind auch eine mysql.h und mysql.c[pp]. Es gibt ein Makefile für jedes Projekt, das die Quelltexte aus dieser 'Sammlung' aufzählt, die zum Kompilieren erforderlich sind. Entsprechend gibt es für alle Projekte eben genau einen mysql-Quelltext.

Der Nachteil dieser Methode ist, dass immer dutzende Dateien zusammen gelinkt werden müssen, das dauert unter Umständen etwas. Auf einem i7 ist die Wartezeit absolut in Ordnung. Allerdings habe ich früher den billigsten Prozessor gekauft, den man noch bekommen konnte und heute filtere ich halt alles unter i7 aus. Diese Art der Entwicklung kostet also unter Umständen ein paar Euro mehr, aber ich habe auch 10 Jahre gebraucht um soviel Code zu verbrechen, dass ein i7 wirklich einen Vorteil bringt.

Um das (etwas) zu beschleunigen kann man zusammengehörige Teile in libs packen. Entweder in statische Librarys (.lib bzw. .a unter Linux) oder dynamisch geladene Librarys (.dll bzw. so unter Linux). Dlls kann man dann auch von mehreren Programmen wiederverwenden, die DLL muss also nur ein einziges Mal im Arbeitsspeicher liegen, kann aber von mehreren Programmen genutzt werden. Ein Vorteil, der heute eher keine Rolle mehr spielt, schließlich gibt es genug Speicher und das eine Programm verlangt eine DLL in Version 1 stürzt mit Version 2 ab, das andere Programm läuft aber erst ab Version 2 der DLL. Also bringen alle ihre DLLs selbst mit.
Aber dynamische Libs haben für den Entwickler noch den großen Vorteil, dass man sie nicht linken muss. Man schreibt kleinere Programme (bzw. arbeitet eben an einer Lib) und muss andere Libs bzw. das Hauptprogramm in der Zeit nicht kompilieren.
In meinem Fall geht das nicht so gut, weil ich sehr viel mit Templates arbeite, bzw. sehr viele Basisklassen habe und so Abhängigkeiten bzw. Redundanz in den libs habe (sie werden halt recht groß).

Welcher Weg also "üblich" ist, ist Dir überlassen - je nachdem welches Problem Du lösen möchtest.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

abap_true
Beiträge: 25
Registriert: Di Feb 05, 2013 1:38 pm
Wohnort: Köln

Re: Erstellen eigener Bibliotheken

Beitrag von abap_true » Mi Apr 17, 2013 1:10 pm

... das sind 2 sehr schöne übliche Methoden :D
Dann werd ich mich mal darin üben :lol:

Antworten