(28.03.2012 10:10 )ofahed schrieb: auf ni.com steht folgendes:
„Nutzen alle DLLs dieselbe Version der LabVIEW Run-Time Engine und das Laden der DLLs geschieht dynamisch, empfiehlt National Instruments, dass Sie die LabVIEW Run-Time Engine dynamisch durch Laden der Datei lvrt.dll laden, bevor Sie eine der in LabVIEW erstellten DLLs laden. Ein Laden der LabVIEW Run-Time Engine vor dem Laden der DLLs verringert Overhead, indem die Run-Time Engine am Laden und Entladen gehindert wird, wenn die DLLs vom Speicher ge- und entladen werden.“
Original-Link: http://zone.ni.com/devzone/cda/tut/p/id/8364
Leider zur "LVRT.dll" konnte ich keinerlei Infos noch die Headerfile finden. Die Funktionen sind zwar ersichtlich, aber die Inputs/Outputs nicht . Vielleicht mag dieses auch der falsche Ansatz sein.
Die Bemerkung zur lvrt.dll wenn man mehrere LabVIEW DLLs verwendet ist zwar scön angedacht aber nicht gut durchgedacht. Denn das Problem ist gerade, die richtige DLL zu finden. lvrt.dll ist jeweils in einem versionsabhängigen Verzeichnis installiert, dessen Pfad man aber nicht hardwiren kann, da die Stelle wo die Runtimes installiert werden benützerdefinierbar ist. Die NI Art um das zu lösen, ist zur Zeit ein Registryeintrag der angibt wo die jeweilige Runtime installiert ist. Aber das ist zwar für alle bisher bestehende LabVIEW Versionen so, aber niemand kann garantieren, dass das in Zukunft so bleibt und wenn Du das in Deine Applikation so einbaust geht es hässlich verkehrt wenn NI das jemals ändert und Du dann auf diese LabVIEW Version upgraden willst.
Eine bessere Variante ist deshalb um eine Dummy DLL mit Dummy Funktion in der selben LabVIEW Version zu machen und diese durch eine Call Library Node im Hauptprogramm zu laden. Wenn das Hauptprogramm in den Speicher geladen wird, wird auch diese Dummy DLL in den Speicher geladen und die lokalisiert die LabVIEW Runtime DLL in der richtigen Weise für die aktuelle LabVIEW Version, in der die DLL gemacht wurde. Wenn Du dann alle anderen plugin DLLs in der selben LabVIEW Version erstellst, brauchen diese die lvrt.dll nicht mehr zu laden, was einiges and Ladezeit spart.