Forum: PC-Programmierung exe oder dll Anwendung?


von Martin Schnitz (Gast)


Lesenswert?

Guten Abend...
Ich benötige einen Programmteil, der mir Daten von der seriellen 
Schnittstelle ausliest, für unterschiedliche Softwareprojekte immer in 
der selben Ausführung.

Jedes Softwareprojekt hat andere Aufgaben, aber es werden immer nur die 
NutzDaten (eigenständiges Protokoll) ausgewertert und somit der selbe 
Programmteil für unterschiedliche Anwendungen benötigt.

Da ich aber diesen Programmteil nicht immer in neue Projekte einpflegen 
will, möchte ich gerne ein eigenständiges Programm daraus machen!

Die Frage wäre jetzt ob ich eine eigene .exe - Anwendung oder ein DLL 
dafür erstelle?! Was würdet Ihr alls Kommunktikationsebene zwischen den 
Anwendungen für den Datenaustausch nehmen??

Was ist die besser Lösung, eine eigene exe- oder eine DLL- Lösung und 
wovon soll ich dieses abhängig machen??
Gibt es hier Ratschläge, wie ich die Sache am besten angehen kann??

Betriebssysten ist WinCE 5.0 / 6.0

Danke für die Tips!!

von yalu (Gast)


Lesenswert?

> ... somit der selbe Programmteil für unterschiedliche Anwendungen
> benötigt.

Das hört sich so an, als wenn eine Bibliothek (LIB oder DLL) das
Richtige wäre.

> möchte ich gerne ein eigenständiges Programm daraus machen!

Das wäre eine EXE.

Wenn du tatsächlich zwei getrennte Programme (EXEs) hast (eins für das
Lesen von der seriellen Schnittstelle und eins für den Rest), wird die
Kommunikation zwischenden beiden Teilen relativ kompliziert (z.B. über
Pipes).

Eine gemeinsame Bibliothek für die Schnittstellenbehandlung ist
wahrscheinlich geschickter, weil du dann die einzelnen Funktionen
direkt aufrufen und Daten per Funktionsargeumente und -rückgabewerte
übergeben kannst. Auch gemeinsam genutzte globale Variablen sind damit
problemlos möglich.

Du kannst nun noch auswählen, ob du lieber eine statische (LIB) oder
dynamische (DLL) Bibliothek möchtest.

Die Funktionen der statischen Bibliothek werden beim Linken fest mit
der Anwendung verbunden, das Ergebnis ist eine EXE-Datei, die das
gesamte Programm enthält. Soll das Programm auf einen anderen Rechner
übertragen werden, muss nur eine einzige Datei kopiert werden. Bei der
Verwendung von DLLs müssen diese immer mitkopiert werden, da ohne sie
die Anwendungen nicht lauffähig sind.

Eine DLL wird immer nur einmal in den Hauptspeicher geladen, auch wenn
sie von mehreren Anwendungen benutzt wird. Das spart u.U. etwas
Hauptspeicher. Bei Verwendung einer statischen Bibliothek wird deren
Inhalt als Kopie an jede Anwendung angehängt. Damit wird bei der
Ausführung mehrerer Anwendungen in Summe mehr Speicherplatz
verbraucht.

Da DLLs automatisch und erst zur Laufzeit mit der Anwendung gelinkt
werden, werden Änderungen an der DLL sofort bei allen abhängigen
Anwendungen wirksam. Bei einer statischen Bibliothek müssen alle
abhängigen Anwendungen explizit neu gelinkt werden, damit die
Ändereungen wirksam werden. Das ist zwar etwas mehr Arbeit, dafür
erkennt man aber leichter eventuelle durch die Änderungen
hervorgerufene Inkompatibiltäten zwischen den Anwendungen und der
Bibliothek (Stcihwort DLL-Hölle). Wird die Aufrufschnittstelle der
Bibliothek geändert, müssen ohnehin alle Anwendungen neu kompiliert
werden, egal ob DLLs oder LIBs verwendet werden.

Stehen alle Funktionen der statischen Bibliothek in einem einzelnen
Quellcodefile, muss daraus nicht unbedingt eine Bibliothek erstellt
werden. Man kann auch das beim Kompilieren erzeugte OBJ-File direkt
mit den einzelnen Anwendungen linken. OBJ-Files sind m.w. in Windows
immer statisch, DLOs (o.ä.) gibt es nicht.

von Martin Schnitz (Gast)


Lesenswert?

Hallo Yalu,
danke für Deine ausführliche Antwort.

Ich werde vermutlich eine dynamische (DLL) Bibliothek als Lösung 
einsetzen.

Ich muss noch ein paar Details recherchieren um mir 100% sich zu sein. 
So mal eben das ist das auch nicht gemacht.

Danke noch mal...

Mfg Martin

PS: Ich freue mich über weitere Beiträge!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.