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 

Unterschied Managed/Unmanaged C++ 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!

01.12.2009, 19:55
Beitrag #1

M4Z Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Nov 2009

2009
2008
kA

4813
Schweiz
Unterschied Managed/Unmanaged C++ DLL?
Hallo miteinander!
Ich bin Systemtechnikstudent im dritten Semester und arbeite gerade an einem Testautomaten, der mit LabVIEW 8.5 gesteuert etc werden soll.
Dazu benötigen wir von unserem Auftraggeber eine DLL, um spezifische Funktionen im Testobjekt aufzurufen. Diese DLL wird erst noch geschrieben.

Nun zu meiner Frage: Unser Auftraggeber fragte, ob wir eine managed oder eine unmanaged DLL brauchen. Nach kurzer Rücksprache mit einem Dozenten, der sich mit LabVIEW auskennt, riet dieser uns, eine unmanaged DLL zu verlangen. Nun ist fraglicher Dozent längerfristig nicht erreichbar und unser Auftraggeber möchte wissen, wieso wir eine unmanaged DLL wollen. Eine solche zu schreiben bedeute für sie einen Mehraufwand. Ich weiss, dass eine managed DLL auf das .NET Framework aufbaut und eine unmanaged nicht.

Welche Vor- und Nachteile bringt es in LabVIEW mit sich, eine managed bzw. unmanaged DLL einzubinden bzw. ist überhaupt beides möglich?

Vielen Dank für eure Hilfe!

greetz

M4Z

PS: Sorry falls fas eine totale Noobfrage ist, aber ich hab mit LabVIEW leider noch nicht sehr viel Erfahrung.
thx
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.12.2009, 09:57
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Unterschied Managed/Unmanaged C++ DLL?
Bei managed Mode geht es um .Net Assemblies. Auf die greift man mit den LabVIEW .Net Nodes zu. Bei Unmanaged Mode geht es um Standard DLLs welche Funktionen exportieren. Diese werden typischerwiese nicht in C# sondern in C oder C++ programmiert und in LabVIEW mittels Call Library Node angesprochen.

Grundsätzlich ist das Erstellen von .Net Assemblies in C# wohl als einfacher zu bezeichnen, und für C unbedarfte Seelen mittels .Net Funktionen in LabVIEW auch einfacher einzubinden da man sich nicht so ausführlich mit der richtigen Konfiguration von Parametern und deren Datentypen abgeben muss.

Persönlich finde ich die Wahl von .Net, sicher für Treiber, aber in den meisten Fällen etwa das gleiche wie wenn man den Hummer aus der Garage holt um eben mal ein Brot beim Bäcker um die Ecke zu holen, einfach weil er dort steht. Laufen kostet kaum mehr Zeit und wäre viel gesünder. Big Grin

Aber ja, ich verstehe C ziemlich gut und in obiger Analogie, habe auch Beine die noch funktionieren!

Rolf Kalbermatter

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
02.12.2009, 12:31
Beitrag #3

M4Z Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Nov 2009

2009
2008
kA

4813
Schweiz
Unterschied Managed/Unmanaged C++ DLL?
Vielen Dank für den Schnellkurs! Ich werde mich mal informieren, wie das funktioniert und melde mich hier wieder, wenns nicht laufen sollteWink

Danke nochmal.

PS: Die DLL wird anscheinend in C++ programmiert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2010, 09:29 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2010 09:42 von M4Z.)
Beitrag #4

M4Z Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Nov 2009

2009
2008
kA

4813
Schweiz
Unterschied Managed/Unmanaged C++ DLL?
Hallo, ich habe jetzt versucht die DLL einzubinden, allerdings funktioniert das nicht so wie ich will. Die DLL ist afaik in C# geschrieben und .NET managed.

ich habe die DLL und mein VI jetzt ma gezippt und auf meinen Webspace geladen

als Answer-String kann eine der folgenden Möglichkeiten herauskommen: "write", "read", "uid" oder "nada".
Die nicht angeschlossenen Eingänge werden eigentlich nicht benötigt, was mache ich damit?
Habe ich ganz allgemein etwas falsch gemacht?

Vielen Dank für die Hilfe

edit:
Datei ist im Anhang, Danke für den Hinweis.


Angehängte Datei(en)
Sonstige .zip  DLL.zip (Größe: 12,67 KB / Downloads: 268)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2010, 09:35
Beitrag #5

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Unterschied Managed/Unmanaged C++ DLL?
Bitte hier im Forum hochladen und nicht extern. LVF-Regeln beachten.:rulez:Danke.

Gruß Markus

' schrieb:ich habe die DLL und mein VI jetzt ma gezippt und auf meinen Webspace geladen: Download

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2010, 20:23 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2010 20:24 von rolfk.)
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Unterschied Managed/Unmanaged C++ DLL?
' schrieb:Hallo, ich habe jetzt versucht die DLL einzubinden, allerdings funktioniert das nicht so wie ich will. Die DLL ist afaik in C# geschrieben und .NET managed.

ich habe die DLL und mein VI jetzt ma gezippt und auf meinen Webspace geladen

als Answer-String kann eine der folgenden Möglichkeiten herauskommen: "write", "read", "uid" oder "nada".
Die nicht angeschlossenen Eingänge werden eigentlich nicht benötigt, was mache ich damit?
Habe ich ganz allgemein etwas falsch gemacht?

Vielen Dank für die Hilfe

edit:
Datei ist im Anhang, Danke für den Hinweis.

Also die .Net Funktion ist scheinbar so deklariert dass das Ein- und Ausgänge sind. Wenn das nur Ausgänge sind, sollte das auch so im .Net Project deklariert werden, ansonsten verlangt LabVIEW halt einen gültigen Eingangswert: zum Beispiel eine leere String- resp. eine False Booleankonstante.

Testen kann ich es nicht denn die Funktion hängt auf meinem Computer undendlich. Weiss aber nicht ob das ist weil ich die entsprechende Hardware/Software nicht habe oder weil einer der Parameter nicht gültig ist.

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
Anzeige
22.01.2010, 08:57
Beitrag #7

M4Z Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Nov 2009

2009
2008
kA

4813
Schweiz
Unterschied Managed/Unmanaged C++ DLL?
' schrieb:Also die .Net Funktion ist scheinbar so deklariert dass das Ein- und Ausgänge sind. Wenn das nur Ausgänge sind, sollte das auch so im .Net Project deklariert werden, ansonsten verlangt LabVIEW halt einen gültigen Eingangswert: zum Beispiel eine leere String- resp. eine False Booleankonstante.

Testen kann ich es nicht denn die Funktion hängt auf meinem Computer undendlich. Weiss aber nicht ob das ist weil ich die entsprechende Hardware/Software nicht habe oder weil einer der Parameter nicht gültig ist.

Ok... Eigentlich sollte die Capabilty Methode der DLL keine weitere Hard- oder Software benötigen... dann werd ich da nochmal den Programmierer kontaktieren müssen. danke schon mal
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2010, 11:27 (Dieser Beitrag wurde zuletzt bearbeitet: 22.01.2010 11:28 von RoLe.)
Beitrag #8

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
Unterschied Managed/Unmanaged C++ DLL?
' schrieb:Die nicht angeschlossenen Eingänge werden eigentlich nicht benötigt, was mache ich damit?
Habe ich ganz allgemein etwas falsch gemacht?
Als bei mir ist es ausführbar und beendet sich, wenn ich die Eingänge verbinde und die Schleife entferne.
Die beiden Ausgänge bleiben aber leer, weil ...
Code:
public bool Capability(string reader, string antenna, string badge, bool metal, ref string answer, ref bool isPrompt);
Die 2 nicht verbundenen sind als ref deklariert.
Wie das geht mit .NET habe ich noch nicht rausgefunden.

Habe mir mal den Code angeschaut.
Meine Idee, was der "Schlüsselhersteller" (Programmierer) ändern könnte.
Die 2 ref's aus der Funktion entfernen und vorher als public deklarieren.
Die kannst du dann in LabVIEW nach dem aufruf von Capability als Property abfragen.

[code]public class SerComLayer
{

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2010, 11:47
Beitrag #9

M4Z Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: Nov 2009

2009
2008
kA

4813
Schweiz
Unterschied Managed/Unmanaged C++ DLL?
na dass ist doch schon mal was... die Sache mit der "ref-Definition" ist dann wohl auch dafür verantwortlich, dass bei answer nichts herauskommt?
Danke!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2010, 13:00
Beitrag #10

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Unterschied Managed/Unmanaged C++ DLL?
' schrieb:na dass ist doch schon mal was... die Sache mit der "ref-Definition" ist dann wohl auch dafür verantwortlich, dass bei answer nichts herauskommt?
Danke!

Das sehe ich anders. Kenne mich bei der .Net resp. C# Nomenklature nicht aus aber ich nehme mal an das ref hier einfach bedeudet "pass by reference" also als Pointer und das wird eben für Parameter benützt die einen Wert zurückgeben können. Weiss aber jetzt nicht was .Net benötigt dass es nur ein "output only" ref Parameter ist.

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
Antwort schreiben 


Gehe zu: