LabVIEWForum.de - DLL ausführen auf PXI-8106

LabVIEWForum.de

Normale Version: DLL ausführen auf PXI-8106
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe ein Problem das mich grade zum Verzweifeln bringt.
Ich arbeite grade an einem Projekt, bei dem ich einen Servocontroller per LabVIEW ansteuern. Die Firma des Servocontroller hat eine dll mit allen Funktionen bereitgestellt und sogar fertige VI´s die auf die einzelnen Funktionen der dll zugreifen. Das hat auch alles wunderbar geklappt.

Jetzt will ich das ganze über das PXI-8106 System laufen lassen. Zum ersten test rufe ich nur die init Funktion (die eh als erstes aufgerufen werden muss) der dll auf.

Beim kompilieren taucht dann der Fehler auf:

Failed to download target - multi rate - variables.vi
LabVIEW: Failed to load shared library Xenax.dll:init:C on RT target device.
Deployment completed with errors


Ich habe eine DLL selbst geschrieben um zu gucken ob das PXI System überhaupt mit dll´s arbeiten kann. Doch dies Funktioniert.
Meine Vermutung ist, dass das PXI System mit einfachen dll Dateien keine Probleme hat. Doch bei dll Dateien die auf andere Daten Zugreifen, bzw. etwas senden wie in meinem Fall ein Telegramm an den Servocontroller, gibt es Probleme.
Kann jemand meine Theorie bestätigen bzw. widerlegen oder hat jemand schon mal ein ähnliches Problem gehabt und wenn ja wie wurde dieses bewältigt.

Würde mich sehr über eine Antwort freuen.
Zur Klarstellung, da ich beides auf NI.com finde:

Hast du ein NI PXI-8106 RT oder ein NI PXI-8106 System?

Gruß, Jens
Hallo Jens,

ich habe ein PXI-8106 RT.

Gruß Daniel
ruf die main dll im dependency walker (suche auf google) auf, damit du alle abhaengigkeiten siehst.
danach ruf die mail dll im rt checker auf (http://digital.ni.com/public.nsf/allkb/0...B00015230) und stell sicher, dass der dll checker auch die abhaengigen dlls checkt.

wenn das klappt, dann kopier alle dls in den ni-rtsystem folder
Wahrscheinlich ruft Deine DLL APIs auf die vom ETS realtime System auf dem RT Kontroller nicht unterstüzt sind. Thomas hat es schon angesprochen dass Du die DLL und alle Dependencies mit dem RT Checker kontrollieren solltest ob die da Windows APIs gebrauchen die vom ETS System nicht unterstützt werden.

Eine andere Variante ist dass diese DLL in der neusten Visual C(++) kompiliert wurde mit dynamischem C runtime Support. Das ETS System kommt glaub ich mit der Standard MS C Runtime V7 (glaube von VS .Net). Wenn das in VC2005 oder noch neuer kompiliert wurde dann ist die richtige runtime noch nicht auf dem System und die Installation/Kopieren der entsprechenden Runtime hat gute Chancen um auch nicht zu funktionieren, da die neueren Versionen auch immer von neueren System APIs Gebrauch machen.

Oder die DLL ist mit der Debug Version der Runtime gelinkt was auch nicht gehen würde.

Rolf Kalbermatter
Hallo,

ich möchte mich für die Hilfe bei euch allen bedanken. Habe jetzt herraus gefunden dass die DLL nicht echtzeitfähig ist.
Ich probiere einen anderen Lösungsweg für mein Problem aus.

Nochmals vielen Dank Big Grin !!!

Gruß Daniel
Referenz-URLs