LabVIEWForum.de
LV DLL in Visual Basic verwenden - 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: LV DLL in Visual Basic verwenden (/Thread-LV-DLL-in-Visual-Basic-verwenden)



LV DLL in Visual Basic verwenden - sm - 27.04.2011 15:22

Hallo zusammen,

ich habe folgendes Problem: Ich möchte aus meinem LabVIEW VI eine Shared Library (DLL) machen. Grundsätzlich funktioniert das auch mit Hilfe des Application Builder jedoch kann ich die DLLs nicht in Visual Studio 2008 Express einbinden (Projekt/Verweise einbinden). Hierbei kommt grundsätzlich folgender Fehler:

"Es konnte kein verweis auf /Pfad der DLL/ hinzugefügt werden. Stellen Sie sicher, dass auf die Datei zugegriffen werden kann und dass sie eine gültige Assembly oder COM-Komponente ist."

Hiermit kann ich jedoch nur wenig anfangen. Im Internet stehen hierzu zwar viele, jedoch meist mir nicht weiterhelfende Einträge.
Zunächst dachte ich, dass es an den Boolschen Variablen liegt, da diese in LV 1Byte groß sind und in VB 2Byte. Daran liegt es jedoch nicht da ich egal was für Variablen ich in die DLL setze, grundsätzlich o.g. Fehlermeldung erhalte.

Interessanterweise kann LV die selbst erstellte DLL nur manchmal mit Hilfe von "Tools/Import/Shared Library (.dll)" importieren! Manchmal bedeutet, wenn ich z.B. die Representation von Numerischen Eingabeelementen auf "Double" setze. Beim Erstellen der DLL habe ich mich an die Vorgaben von NI gehalten, die hier zu finden sind. Die DLL wurde mit LV2010 erstellt.


RE: LV DLL in Visual Basic verwenden - rolfk - 27.04.2011 15:45

LabVIEW DLLs sind ganz normale Funktions-DLLs, keine .Net Assemblies oder ActiveX COM componenten. Du kannst daher die DLL nicht einfach so durch den Visual Studio Wizard in Dein Project importieren lassen sondern musst das händisch machen. Wenn Du Visual C/C++ verwenden würdest, würde LabVIEW Dir einen entsprechenden Header bauen, aber bei einer Visual Basic Einbindung musst Du denke ich mal Dein eigenes include File bauen.

Stichwort: Unmanaged Code!!


RE: LV DLL in Visual Basic verwenden - sm - 03.05.2011 08:02

Hallo zusammen,

erst einmal vielen Dank für deine Hilfe, rolfk.

Nun hätte ich noch eine weitere Frage, für die ich jedoch keinen neuen Thread aufmachen wollte.

Wie verhält es sich in DLLs mit While-Schleifen? Ich habe zum Testen ein kleines Programm mit einer While-Schleife geschrieben. Sobald ich das aus VB als DLL aufrufe, hängt sich das VB Programm auf. Liegt das an der While-Schleife? Kann man das irgendwie umgehen, außer den LV-Code umzubauen? Wenn nicht, würde das nämlich mein gesamtes Projekt über den Haufen werfen..

Vielen dank im voraus für eure Hilfe! Wink


RE: LV DLL in Visual Basic verwenden - rolfk - 03.05.2011 13:34

(03.05.2011 08:02 )sm schrieb:  Hallo zusammen,

erst einmal vielen Dank für deine Hilfe, rolfk.

Nun hätte ich noch eine weitere Frage, für die ich jedoch keinen neuen Thread aufmachen wollte.

Wie verhält es sich in DLLs mit While-Schleifen? Ich habe zum Testen ein kleines Programm mit einer While-Schleife geschrieben. Sobald ich das aus VB als DLL aufrufe, hängt sich das VB Programm auf. Liegt das an der While-Schleife? Kann man das irgendwie umgehen, außer den LV-Code umzubauen? Wenn nicht, würde das nämlich mein gesamtes Projekt über den Haufen werfen..

Vielen dank im voraus für eure Hilfe! Wink

Solange Dein Programm im DLL Aufruf steckt ist der entsprechende Thread mit der DLL Ausführung beschäftigt und tut nichts anderes. Das heisst wenn Du in VB keinen eigenen Thread für den Aufruf der DLL anmachst ist der Programmhauptthread in der DLL und ist Dein VB Programm blockiert.

Frag mich jetzt nicht wie man in VB Threads macht. Eher gehe ich ins Kloster als dass ich mich mit VB auf mehr dann theoretischer Basis auseinandersetze Blink