Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
möchte eine externe Biblitothek einer dspace-Karte in LV verwenden. Hierfür gibt es aber nur eine CLIB. Kann ich diese in LV nutzen? Bei den zur Verfügung gestellten Dateien handelt es sich um .lib Dateien. Gibt es dazu auch immer eine DLL? Ist der Knoten zum Aufruf externer Bibs die richtige Variante? Warum können in diesem Knoten eigentlich keine booleschen Datentypen als Rückgabewert oder Parameter ausgewählt werden? Muß ich ich die C-Header-Dateien auch irgendwie einbinden, oder reicht es zum Aufruf, wenn ich die Funktion und deren Parameter kenne?
Wie ihr seht, hänge ich etwas in der Luft. Ich hoffe einer von Euch kann mir helfen!?
danke für den Tip mit dem Tutorial. Das mir einiges geholfen. Aber eine kleine Frage:
Ich habe mit dem Knoten zum Aufruf externer Bibliotheken mal so rumprobiert, und DLL´s gefunden, bei denen es funktioniert, aber auch bei manchen nicht.
Damit meine ich das das Dropdown-Feld beim Konfigurieren die Funtktionen der von mir ausgewählten DLL nicht erkennt. Woran liegt das?
Gruß,
BigBen
24.04.2007, 13:26 (Dieser Beitrag wurde zuletzt bearbeitet: 24.04.2007 13:30 von IchSelbst.)
' schrieb:Ich habe mit dem Knoten zum Aufruf externer Bibliotheken mal so rumprobiert, und DLL´s gefunden, bei denen es funktioniert, aber auch bei manchen nicht.
Prinzipiell sollte es bei allen DLLs gehen.
Zitat:Damit meine ich das das Dropdown-Feld beim Konfigurieren die Funtktionen der von mir ausgewählten DLL nicht erkennt. Woran liegt das?
Keine Ahnung.
Ich kann mir zwei Sachen vorstellen, warum dem so ist. Erstens: Die von dir erwartete Funktion befindet sich tatsächlich nicht in dieser DLL. Zweitens: Der Funktionsprototyp der Funktion ist nicht mit LV kompatibel. Ob das sein kann, weiß ich auch nicht genau. Es scheint mir zwar unwahrscheinlich, aber doch theoretisch möglich.
Nachtrag:
Folgender Fall könnte inkompatibel sein. In C++ ist es möglich, einem Unterprogramm Parameter zu übergeben, deren Anzahl zur Entwicklungszeit nicht bekannt ist. Dafür geht das auch nur mit CDecl (statt StdCall). Ob LV sowas kann, respektive ob es feststellen kann, dass eine Funktion solche Parameter hat, weiß ich nicht.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
danke für den Tip mit dem Tutorial. Das mir einiges geholfen. Aber eine kleine Frage:
Ich habe mit dem Knoten zum Aufruf externer Bibliotheken mal so rumprobiert, und DLL´s gefunden, bei denen es funktioniert, aber auch bei manchen nicht.
Damit meine ich das das Dropdown-Feld beim Konfigurieren die Funtktionen der von mir ausgewählten DLL nicht erkennt. Woran liegt das?
Wenn eine DLL in der Dropdownbox nur ein paar Funktionen listet soetwa wie DLLRegister() und DLLUnregister() handelt es sich immer um eine DLL die ein DCOM (meist ist das dann eine echte ActiveX Implementierung) Schnittstelle bietet. Da dies komplett auf OO basiert kommst Du da mit dem DLL Aufrufknoten nicht hinzu. Die einzige Möglichkeit besteht dann um zu versuchen die ActiveX Schnittstelle mit der ActiveX-Funktionalität von LabVIEW zu benützen. Aber ohne Beschreibung der Schnittstelle ist das nicht sinnvoll (und im Falle einer reinen (D)COM Schnittstelle ohne ActiveX extra Firlefanz) auch gar nicht möglich.
möchte eine externe Biblitothek einer dspace-Karte in LV verwenden. Hierfür gibt es aber nur eine CLIB. Kann ich diese in LV nutzen? Bei den zur Verfügung gestellten Dateien handelt es sich um .lib Dateien. Gibt es dazu auch immer eine DLL? Ist der Knoten zum Aufruf externer Bibs die richtige Variante? Warum können in diesem Knoten eigentlich keine booleschen Datentypen als Rückgabewert oder Parameter ausgewählt werden? Muß ich ich die C-Header-Dateien auch irgendwie einbinden, oder reicht es zum Aufruf, wenn ich die Funktion und deren Parameter kenne?
Das hängt sehr davon ab. lib files können zwei Dinge sein.
Entweder ist es vorkompilierter Code den man in eigene Projekte einbinden kann. Der Compiler/Linker bindet diesen Code dann in das eigene Program ein. Oder es ist eine DLL Import Library die nichts anderes tut als für die verschiedenen Funktionen einen Link zu der eigentlichen Implementation in der DLL herzustellen.
Im ersten Fall brauchst Du einen C compiler mit dem Du die lib in eine DLL umsetzst, die Du dann in LabVIEW aufrufen kannst. Im Zweiten Fall vergisst Du die Lib und versuchst eine Dokumentation zu bekommen, welche Funktionen in welcher DLL implementiert sind.
' schrieb:Folgender Fall könnte inkompatibel sein. In C++ ist es möglich, einem Unterprogramm Parameter zu übergeben, deren Anzahl zur Entwicklungszeit nicht bekannt ist. Dafür geht das auch nur mit CDecl (statt StdCall). Ob LV sowas kann, respektive ob es feststellen kann, dass eine Funktion solche Parameter hat, weiß ich nicht.
LabVIEW kann und braucht sowas nicht festzustellen. Die Anzahl der Parameter bei solchen Funktionen kann zwar varieren ist aber für einen bestimmten Aufruf immer fest, da er sich immer aus einem der am Anfang stehenden Parameter intern ableitet. D.h. der Aufrufer übergibt der Funktion bestimmte Parameter die in ihrer Kombination fest sind.
Es kann aber schon bedeuten dass man für verschiedene Parameterkombinationen für eine solche Funktion aber recht verschiedene Aufrufknotenkonfigurationen machen muss.