INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

QT-dll einbinden



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!

07.12.2009, 14:57
Beitrag #1

Nickylotta Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2009

9.0
2009
en

31134
Deutschland
QT-dll einbinden
Hallo,

ich habe hier eine QT-dll, auf deren Funktionen ich aus LabVIEW zugreifen möchte bzw. muss.

Das vi "Call Library Function Node" kann in diesem Fall die Header nicht auslesen und somit die Funktionen nicht verwenden.
Gibt es eine andere Möglichkeit um auf Funktionen aus QT-dlls zuzugreifen?

Gruß, Nicky
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.12.2009, 15:08 (Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2009 15:13 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
QT-dll einbinden
' schrieb:Hallo,

ich habe hier eine QT-dll, auf deren Funktionen ich aus LabVIEW zugreifen möchte bzw. muss.

Das vi "Call Library Function Node" kann in diesem Fall die Header nicht auslesen und somit die Funktionen nicht verwenden.
Gibt es eine andere Möglichkeit um auf Funktionen aus QT-dlls zuzugreifen?

Gruß, Nicky


Erst einmal die Call Library Node liest keine Header [aus]. Das tut allenfalls der Import Library Wizard aber der kann sich nicht durch C++ Header hindurchfressen und auch komplexe Standard C Headerhierarchien sind ihm manchmal etwas zu schwer verdaulich.

QT nehme ich an meinst Du das entsprechende API von Trolltech. Soviel ich weiss ist das vollumfänglich C++. Da es keinen allgemein gültigen Binärstandard gibt wie C++ Objektklassen exportiert werden, kann LabVIEW auch keine Funktionen bereitstellen, um diese zu importieren. Jeder Compiler hat da nämlich seine eigenen Vorstellungen von Virtual Table Layout, Method Name Decorations und viele andere kleine und teilweise weitreichende Details. Man kann deshalb C++ Objektdateien von dem einen Compiler beinahe nie mit einem anderen Compiler verwenden da nicht nur das Objektfileformat verschieden ist sondern auch das binäre Layout der Objekte.

Die einzige Möglichkeit um ein C++ API in LabVIEW zu integrieren ist dieses API zu wrappen. Das kann eine Standard C Wrapper DLL sein die für jede Objektmethode und -Variable auf die zugegriffen werden soll eine entsprechende Funktion exportiert, oder ein ActiveX oder eventuel .Net Wrapper der die C++ Objektklassen in entsprechende COM (ActiveX) oder .Net Klassen umsetzt.

So oder so kommt man um die Erstellung einer extra DLL nicht umhin. Dabei hat bei mir die Standarad C DLL den Vorzug da ich mich am Besten damit auskenne. Im Hinblick auf QT kommt auch noch dazu, dass eine solche DLL mit nicht allzu grossem Aufwand auch nach shared Libraries für andere LabVIEW Platformen portiert werden kann.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: