Gast
#2611611
Hallo zusammen, ich habe mich nun etwas durchs Forum gelesen zu sämtlichen Sachen mit DLL , Interprozesskommunikation und Multihreading. Wirklich schlauer bin ich noch nicht, eher verunsicherter dank solcher Wörter wie "DLL-Hell" :-D Folgendes Szenario habe ich. Es gibt eine Anwendungsdatei die Daten verarbeitet und per TCP/IP an eine Oberfläche weiterleitet. Zusätzlich muss es Daten austauschen mit einem zweiten Programm welches über verschiedene HW Peripherien Daten erhält. Das Oberflächen Programm können wir einfach mal ignorieren. Im Moment ist es so gelöst das beide Programme eine Exe sind und über ein Virutalles Memmoryfile sprechen. Der Zugriff dadrauf wird per Global Mutex geregelt. Da die Programme aber nicht wirklich alleine laufen müssen wäre nun der Gedanke die Programme zusammen zuführen. Es muss einzig und allein möglich sein, den einen Teil ohne den anderen Teil auszutauschen. Deswegen war auch früher der Gedanke der zweiten Exe entstanden. Da ich nun die ersten Versuche mit einer DLL gemacht habe scheint es mir garnicht so unvernünftig eine DLL zu nehmen. Damit könnte ich sogar auf die Glboale Mutex und das Virtuelle File verzichten und einfach ein großes Array deklarieren und dieses in der DLL Freigeben bzw. Funktionen für den Zugriff schaffen. In der Exe die eine DLL werden soll gibt es kein malloc oder der gleichen, alle Variablen/Arrays/Strukturen werden fest deklariert. Es werden dort mehrere Threads mit hoher Priorität erstellt. Nun kommen ein paar Verständnisfragen: - Funktionen und Globale Variablen die ich nicht per DLLImport / Export Prefix deklariere können im anderen Programm nicht gesehen/benutzt/manipuliert werden, richtig? - Speicherprobleme kan es nicht geben?! Probleme mit Heap oder Stack in irgendeiner weise? - Threads können mit hoher Priorität erstellt werden oder hängen sie in irgendeinerweise an der Exe die sie erzeugt haben? - Ich hatte was von Createthread Problem gelesen aber es nicht ganz verstanden. Was ist dort das Problem? Kann das bei mir auftretten? Die Exe ruft eine Init Funktion der DLL auf, die DLL erzeugt die Tasks und diese laufen endlos im Hintergrund bis das Haupt-Exe-Programm geschlossen wird. Die Funktionalität, dass die DLL von mehreren Programmen genutzt wird benötige ich garnicht. Ich möchte nur keine Statisch gelinkte Bibliothek haben, um dass Programm austauschen zu können!