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 

Dieses Thema hat akzeptierte Lösungen:

Callback aus VB-.net-DLL initialisieren



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!

15.06.2016, 09:39 (Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2016 09:40 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Callback aus VB-.net-DLL initialisieren
(15.06.2016 07:47 )IchSelbst schrieb:  
(14.06.2016 11:36 )rolfk schrieb:  Der Event Callback Knoten verlangt ein .Net Event.
Also gut: Dann heißt es nicht mehr Callback (im Sinne eines Funktionsaufrufes per spezifischen Delegate), sondern Event - im Sinne von "gemanagert von meinem Eventhandler". Für mich ergibt es dasselbe: Ich muss nicht pollen.
Das ist sogar noch komplizierter als das. Ein Delegate ist ein Objectinterface das als Callback verwendet wird. Ein Funktionspointer, den Du da scheinbar hast, ist einfach ein Funktionspointer. Und dann sind da noch .Net Events! Alles möglich in .Net, wobei Funktionspointer für ein managed System wie .Net schon sehr archaisch sind und Delegates nur in C# wirklich funktionieren. Für Integration mit anderen dann C# Umgebungen sind .Net Events die am besten geeigneten, ausser Du verwendest C(++), dann ist der Funktionspointer das Einfachste.

Zitat:
Zitat:Das heisst wenn die Versionen nicht genau stimmen ...
Du meinst die .Net-Versionen: Das hab ich mittlerweile auch herausgefunden. Muss ich also im Auge behalten ...

Nö, ich meinte die Versionen von LabVIEW und der LabVIEW runtime. Wenn Deine DLL in derselben LabVIEW Version erstellt wurde dann die in der Du die DLL lädst, wird die DLL In-Process geladen und aufgerufen. Ansonsten lädt der DLL Wrapper die DLL Out-of-Process in einen LabVIEW Runtime Process und führt ihn mittels Datenmarshalling aus. Das heisst auch dass Du dann auf der Entwickelmaschine die LabVIEW Version in der Du entwickelst haben musst und die LabVIEW Runtime Version in der die DLL erstellt wurde. Und wenn Du dann die Applikation in ein Executable baust musst Du die Runtime Version Deiner Entwickelumgebung haben und die Runtime Version(en) in denen alle eventuellen DLLs erstellt wurden.

Das das Ganze mit den .Net Versionen noch einmal mindestens so kompliziert ist, macht es einfach noch spannender. Big Grin

Zitat:Fazit:
Dann muss der DLL-Hersteller ein Event verwenden bzw. zur Verfügung stellen. (Ich gehe davon aus, der kann das. Es hat ihm halt noch keiner gesagt, dass er für LV einen Event nehmen muss.)

Nicht nur für LabVIEW! Zwar wird die letzte Version von Visual Basic inzwischen wohl auch irdendetwas haarsträubendes unterstützen um selbst Delegates benützen zu können, aber in der Vergangenheit musstest Du Events benützen oder Dich mit Funktionspointern herumschlagen und damit managed-to-unmanaged und zurück Schwierigkeiten in Kauf nehmen.

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 


Nachrichten in diesem Thema
RE: Callback aus VB-.net-DLL initialisieren - rolfk - 15.06.2016 09:39

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  CallBack Funktionen in C für LV spamer84 3 6.886 07.05.2008 19:56
Letzter Beitrag: rolfk
  Datenrückmeldung von DLL über Callback Kali 4 9.407 23.10.2007 16:48
Letzter Beitrag: Kali

Gehe zu: