Hallöle,
ihr werdet es nicht glauben, aber wir hängen immer noch mit dieser Delphi-DLL rum, wegen der ich euch schon vor ca. 1 Jahr genervt habe.
Immerhin sind wir inzwischen an einem definierten Problem angekommen:
Ich rufe im LabVIEW-Programm 3 DLL-Funktionen auf,
Init (bei Programmstart),
Step (in einer While-Schleife),
Final (bei Programmende).
Init öffnet zwei Dateien (mit globalen Handles oder wie auch immer das bei Delphi genannt wird) und legt große, globale Speicherbereiche an, die mit sinnvollen Werten vorbelegt werden.
Step liest die Dateien und nutzt die Speicherbereiche für Berechnungen. Einzelne Werte aus diesem Speicherbereich werden werden als double zurückgeliefert. (Die Rückgabe wurde bereits mit Dummy-Werten überprüft.)
Final schließt die Dateien und gibt den globalen Speicher wieder frei.
Es scheint so zu sein, dass die 3 DLL-Aufrufe (konfiguriert auf: beliebiger Thread) aber nicht auf dieselben Speicherbereiche zuzugreifen. Wird die Funktionalität des LabVIEW-Programms als Delphi-Programm geschrieben, das dann die DLL aufruft, funktioniert aber alles tadellos.
Kann mir vielleicht jemand erklären, wie LabVIEW DLL-Aufrufe handhabt? Was passiert mit globalen DLL-Variablen?
Ist doch eine tolle Frage fürs Sommerloch
Grüße aus einem wirklich eklig warmen Büro,
Bärbel