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 

Methodenaufruf aus Zeigern auf Klassenelementen



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!

24.08.2007, 10:31 (Dieser Beitrag wurde zuletzt bearbeitet: 24.08.2007 10:32 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Methodenaufruf aus Zeigern auf Klassenelementen
' schrieb:Ich habe ein unfreundliches Problem für daß es evtl. gar keine Lösung gibt.

Es geht um Ansteuerung einer Kodak Kamera über LabVIEW.
Die Mitgelieferte dll bietet nur einen Teil der Funktionen z.B. Öffnen der Kameras über USB und Rückgabe eines Zeigers auf ein Kamera Klassenelement.
Das Auslesen der Kameradaten erfolgt laut Beispielcode über die Memberfunction des Klassenelements, welches dann wiederum einen Zeiger auf den Puffer übergibt.
Möglicherweise kann ich diesen Zeiger auf die bekannte Klassenstruktur auf ein Array umlegen und Rückwandeln um an die Daten zu kommen, aber ich sehe keine Möglichkeit aus LabVIEW herraus die Memberfunction aufzurufen die mir den Datenpuffer zurückliefert.

Kennt jemand eine Lösung?

Einzige echte Alternative die ich sehe ist eine weitere dll zu erstellen, welche mir die Methode aufruft und gleich die Pufferadresse liefert.

Also Du sprichst da von Klassenelementen und das klingt ganz hässlich nach C++. WEnn dem so wäre wirds nicht gehen. LabVIEW kann nicht C++ Objekte direkt durch den Bibliotheksknoten aufrufen. Das fragt absolut sicher nach einer wrapper DLL die Dir zwischen C++ und dem Standard C API das der Bibliotheksknoten unterstützt, übersetzt.

Wenn es nur ein Funktionspointer ist, gibt es aber eventuel eine Möglichkeit. Nur ist die etwas umständlich und ein C Wrapper-DLL hat sich da bei mir bis jetzt noch allemal als die bessere Lösung herausgestellt. Du kannst in LabVIEW eventuel eine DLL generieren die eine Funktion exportiert, wessen Aufrufinterface kompatibel ist mit Deinem Funktionspointer. Ob das wirklich geht ist aber abhängig von den Parametern die diese Funktion benötigt.

Danach kannst Du mit der Windows APIs LoadLibrary() und GetProcAdress() einen Pointer zu dieser LabVIEW DLL Funktion erhalten und diesen an die entsprechende Funktion Deiner anderen Bibliothek geben. Die DLL ruft dann die LabVIEW DLL Funktion auf. Wie gesagt es ist nicht trivial und man braucht echt absolut alle Kenntnis die auch zum Eerstellen einer Wrapper DLL nötig ist um dies erfolgreich zu tun. Daher dass der direkte Gang zur Wrapper DLL für mich eigentlich immer den Vorrang hat.

Rolf Kalbermatter

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 


Nachrichten in diesem Thema
Methodenaufruf aus Zeigern auf Klassenelementen - rolfk - 24.08.2007 10:31

Gehe zu: