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 

Einbinden externer DLL



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!

28.05.2013, 10:53 (Dieser Beitrag wurde zuletzt bearbeitet: 28.05.2013 10:56 von St_Markus.)
Beitrag #1

St_Markus Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Jul 2011

10
2009
DE


Deutschland
Einbinden externer DLL
Hallo liebe LabVIEW-Freunde,

ich stehe gerade vor einem recht großen Problem und schildere euch erst mal die Randbedingungen Big Grin

Ich habe mir für ein Messgerät das Software Development Kit (SDK) vom Hersteller gekauft. Eigentlich sollte das Kit eine ComObjekt bzw eine ActiveX Schnittstelle besitzen. Leider habe ich nach langer Zeit des Wartens nur ein SDK ohne COM Objekt bzw ActiveX bekommen. Neben dem SDK habe ich noch eine Interface Specification erhalten, in der die Funktionen und Datentyp erläutert werden. Eine Header-Datei für das automatische Einbinden ist leider auch nicht vorhanden.
Das SDK besteht aus vielen DLL Dateien, es gibt allerdings eine die als Schnittstelle zu den anderen in LabVIEW genutzt werden kann über diese können dann auch die einzelnen Funktionen angesprochen werden.

Mein erster naiver Versuch war nun, die DLL über den Aufruf externer Bibliotheken anzusprechen. Leider sind in der SDK Datentypen verwendet worden, die LabVIEW nicht unterstützt (_TCHAR* und einige andere herstellereigene Typen). Der sonst sehr kompetente Support von LabVIEW konnte mir leider auch nicht weiter helfen.

Gibt es eine Möglichkeit das SDK zu verwenden, obwohl die Datentypen nicht unterstützt werden? Ich habe nach einigen Recherchen einiges über Wrapper Dateien gelesen, allerdings geht das ganze schon an die Grenze meiner C/C++ Programmierung.

Viele Grüße
Markus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.05.2013, 15:25 (Dieser Beitrag wurde zuletzt bearbeitet: 28.05.2013 15:38 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Einbinden externer DLL
(28.05.2013 10:53 )St_Markus schrieb:  Hallo liebe LabVIEW-Freunde,

ich stehe gerade vor einem recht großen Problem und schildere euch erst mal die Randbedingungen Big Grin

Ich habe mir für ein Messgerät das Software Development Kit (SDK) vom Hersteller gekauft. Eigentlich sollte das Kit eine ComObjekt bzw eine ActiveX Schnittstelle besitzen. Leider habe ich nach langer Zeit des Wartens nur ein SDK ohne COM Objekt bzw ActiveX bekommen. Neben dem SDK habe ich noch eine Interface Specification erhalten, in der die Funktionen und Datentyp erläutert werden. Eine Header-Datei für das automatische Einbinden ist leider auch nicht vorhanden.
Das SDK besteht aus vielen DLL Dateien, es gibt allerdings eine die als Schnittstelle zu den anderen in LabVIEW genutzt werden kann über diese können dann auch die einzelnen Funktionen angesprochen werden.

Mein erster naiver Versuch war nun, die DLL über den Aufruf externer Bibliotheken anzusprechen. Leider sind in der SDK Datentypen verwendet worden, die LabVIEW nicht unterstützt (_TCHAR* und einige andere herstellereigene Typen). Der sonst sehr kompetente Support von LabVIEW konnte mir leider auch nicht weiter helfen.

Gibt es eine Möglichkeit das SDK zu verwenden, obwohl die Datentypen nicht unterstützt werden? Ich habe nach einigen Recherchen einiges über Wrapper Dateien gelesen, allerdings geht das ganze schon an die Grenze meiner C/C++ Programmierung.

Viele Grüße
Markus

_TCHAR ist einfach die Microsoft private Version von TCHAR, die ebenfalls als Windows SDK Datatyp besteht. TCHAR ist definiert als Unicode (16 Bit) Character (der für sehr exotische Sprachen auch mehr als einen 16 Bit Datenwert umfassen kann) wenn _UNICODE als Preprocessor define besteht, ansonsten ist es ein 8 bit ASCII Code Character. Die Frage ist dann auch ob die DLL mit oder ohne _UNICODE kompiliert wurde. Ohne dieses define wäre dieser Parameter ganz einfach als String Parameter (passed as C String Pointer) zu konfigurieren. Wenn die Dokumentation nichts darüber sagt und das originelle Header File nicht zur Verfügung steht hilft nur Trial and Error.

Um die anderen Datentypen zu verstehen wirst Du wahrscheinlich am Besten MDSN befragen. Dort kann man schnell herausfinden ob es sich um einen Microsoft Windows SDK Datentyp handelt.

Aber um eine komplexe DLL in LabVIEW zu interfacen braucht es einige C/C++ Kenntnisse, ganz besonders wenn der Import Library Wizard nicht verwendet werden kann, aber selbst dann kann man nie auf ein automatisches Tool wie diesen Wizard vertrauen. Nachkontrolle durch jemanden der die Datentypen kennt und begreift ist unerlässlich, da die C Sprache nicht ausführlich genug ist um alle Aspekte eines APIs zweifelsfrei zu beschreiben.

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 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Aufruf externer Bibliotheken / Keyence / Schnittstelle _Markus_ 1 6.326 20.05.2019 12:23
Letzter Beitrag: _Markus_
  LabView Wrapper - PostUserEvent aus externer DLL Stephan235 3 10.427 22.07.2015 13:28
Letzter Beitrag: rolfk
  VI als externer Code finalr 1 5.030 23.11.2012 08:58
Letzter Beitrag: GerdW
  Array Elemnte von externer Funktion verbinden Heili 3 5.361 12.11.2010 13:54
Letzter Beitrag: Lucki
  VI mit externer DLL macht kein Multithreading wernerIBN 14 14.134 09.12.2009 17:36
Letzter Beitrag: wernerIBN
  Debugging externer DLL Tom_UniMainz 4 8.709 22.07.2009 07:31
Letzter Beitrag: rolfk

Gehe zu: