Einbinden externer DLL - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: DLL & externer Code (/Forum-DLL-externer-Code) +---- Thema: Einbinden externer DLL (/Thread-Einbinden-externer-DLL) |
Einbinden externer DLL - St_Markus - 28.05.2013 10:53 Hallo liebe LabVIEW-Freunde, ich stehe gerade vor einem recht großen Problem und schildere euch erst mal die Randbedingungen 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 RE: Einbinden externer DLL - rolfk - 28.05.2013 15:25 (28.05.2013 10:53 )St_Markus schrieb: Hallo liebe LabVIEW-Freunde, _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. |