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!!
> ... 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.