LabVIEWForum.de
LabView DLL in C# einbinden - 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: LabView DLL in C# einbinden (/Thread-LabView-DLL-in-C-einbinden--21776)



LabView DLL in C# einbinden - beginner85 - 27.04.2012 14:22

Hallo zusammen,

ich habe in LabView eine DLL erzeugt die ich bisher in einer C# Software(single thread) eingebunden habe.
Nun ich habe eine weitere Software geschrieben (ebenfalls in C#), dieses mal handelt es sich um eine multi-thread Projekt.
Leider lässt sich die DLL nicht mehr benutzen. Jetzt habe ich im Netz eine Funktion in LV gefunden die "Call Library Function Node" heisst.
Leider ist mir nicht ganz klar in welchen Fällen man diese Funktion benutzt. Gilt es bloß wenn ich in LV eine DLL aus einer anderen Sprache einbinden will oder spielt es keine Rolle und ich muss die Funktion benutzen, sobald ich mit DLL arbeite?

LG


RE: LabView DLL in C# einbinden - jg - 27.04.2012 15:31

Call Library Function Node dient zum Aufrufen einer DLL-Funktion aus LabVIEW heraus.

Gruß, Jens


RE: LabView DLL in C# einbinden - rolfk - 27.04.2012 19:48

(27.04.2012 14:22 )beginner85 schrieb:  ich habe in LabView eine DLL erzeugt die ich bisher in einer C# Software(single thread) eingebunden habe.
Nun ich habe eine weitere Software geschrieben (ebenfalls in C#), dieses mal handelt es sich um eine multi-thread Projekt.
Leider lässt sich die DLL nicht mehr benutzen. Jetzt habe ich im Netz eine Funktion in LV gefunden die "Call Library Function Node" heisst.
Leider ist mir nicht ganz klar in welchen Fällen man diese Funktion benutzt. Gilt es bloß wenn ich in LV eine DLL aus einer anderen Sprache einbinden will oder spielt es keine Rolle und ich muss die Funktion benutzen, sobald ich mit DLL arbeite?

Das mit der Call Library Node hat Jens ja schon erklärt. Was die DLL betrifft: Ist das eine .Net Assembly oder hast Du einfach eine DLL erzeugt?

Da Du mit C# arbeitest wäre es wahrscheinlich einfacher um in LabVIEW eine .Net Assembly vom Code erzeugen zu lassen. Das dürfte viel einfacher in einem C# Projekt zu integrieren sein. Eine DLL musst Du als unmanaged Code in C# umständlich integrieren. LabVIEW DLLs und wahrscheinlich auch Assemblies, die keine Panels sichtbar machen, sollten grundsätzlich Threadsafe sein. Aber was ist das eigentliche Problem, das Du hast?

Notfalls musst Du in Deiner Applikation sicherstellen, dass die LabVIEW Komponente immer vom selben Thread aus aufgerufen wird. Das sollte in C# durchaus möglich sein. Andere Teile Deiner Applikation können dabei fröhlich Multithreaded sein, sofern Du die nötigen Dinge beachtest.