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!
wie binde ich externe Header wie z.B. stdlib.h oder time.h von Visual Studio (C-Programmierung) in DLLs ein?
Ich habe nämlich eine Funktion geschrieben, der die beiden genannten Bibliotheken braucht.
Diese Funtion kann ich aber nicht in LabVIEW als DLL einbinden, da die Header stdlib.h und time.h nicht bekannt sind?
Ich hoffe ich kann weiterhelfende Antworten kriegen.
Ja schon eine Funktion kann man importieren. Das geht über diesen Assistenten die du gemeint hast.
Ich habe so ca. 15 Unterfunktionen meines Programmes, die ich mit importieren möchte.
So ca. 5 Funktionen wrappt er und den Rest erkennt er nicht.
LabVIEW braucht nämlich noch die Bibliothen von Visual Studio: stdlib.h und time.h
Verstehe ich richtig, du hast nochmals Funktion aus z.B. time.h in deine DLL eingebunden und als Aufruf exportiert?
Oder nein, der Screenshot impliziert, dass du einen LV nicht bekannten Datentyp übertragen willst.:hmm:Am besten selber von Hand machen, man kann auch Funktionenaufrufe ohne Assistenten implementieren, bei solch zusammengesetzten Dateitypen wird es halt in der Regel nicht ganz einfach.
Oder ist SYSTEMTIME "nur" eine U32/I32 Variable? Dann einfach so deklarieren.
Oder kopier dir aus der time.h die noch benötigten Definitionen in deine Header-Datei.
Oder: Kann man beim Import über den Assistenten nictht mehrere Pfade und Header-Dateien angeben? Dann musst du halt dazu mal die Dateien auf deinem Rechner suchen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:wie binde ich externe Header wie z.B. stdlib.h oder time.h von Visual Studio (C-Programmierung) in DLLs ein
Ich gehe davon aus, du hast eine DLL in C geschrieben, die auch fehlerfrei erstellt (also kompiliert) wurde. Damit erübrigt sich aber deine Frage: nämlich das Einbinden der Headerfiles in eine DLL.
Diese DLL willst du jetzt in LV verwenden. Der automatische Import verlangt jetzt aber diverse Headerfiles. Da diese Header-Files Systemfiles sind, findet sie der Importer nicht (davon gehe ich jetzt mal aus). Leider kann ich hier nicht weiterhelfen. Außer, und so mach ich das immer:
Hinweis:
Du musst nicht unbedingt den automatischen Import machen. DLLs bzw. deren Funktionen kann man auch manuell einbinden bzw. aufrufen.
[*guck*]
Da hat einer was geschrieben.
SYSTEMTIME dürfte eine double sein.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
' schrieb:Verstehe ich richtig, du hast nochmals Funktion aus z.B. time.h in deine DLL eingebunden und als Aufruf exportiert?
Oder nein, der Screenshot impliziert, dass du einen LV nicht bekannten Datentyp übertragen willst.:hmm:Am besten selber von Hand machen, man kann auch Funktionenaufrufe ohne Assistenten implementieren, bei solch zusammengesetzten Dateitypen wird es halt in der Regel nicht ganz einfach.
Oder ist SYSTEMTIME "nur" eine U32/I32 Variable? Dann einfach so deklarieren.
Oder kopier dir aus der time.h die noch benötigten Definitionen in deine Header-Datei.
Oder: Kann man beim Import über den Assistenten nictht mehrere Pfade und Header-Dateien angeben? Dann musst du halt dazu mal die Dateien auf deinem Rechner suchen.
Gruß, Jens
Ich habe DLL-Funktionen geschrieben der auf die beiden Bibliotheken zugreift. Wie auf dem Bild zu sehen ist, kann LabVIEW auf die zwei Biblioteken vielleicht sogar noch auf mehrere nicht zugreifen.
Das ich die Defintionen aus den Bibliotheken entnehmen und in meineder Header kopieren muss, weiß ich. Die Frage ist halt nur welche Stellen ich brauche??
Ich bräuchte unbedingt <stdlib.h> und die ist einbisschen kompliziert aufgebaut.
Bei diesem Assistenten kann ich komischerweise nur einen Pfad zu meiner Header-Datei angeben...