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:

[gelöst] Dynamische Vererbung über die Grenzen von Klassen hinweg



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!

03.05.2011, 13:09 (Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2011 14:05 von davidwm.)
Beitrag #1

davidwm Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: May 2011

2010SP1
2008
DE


Deutschland
[gelöst] Dynamische Vererbung über die Grenzen von Klassen hinweg
Hallo zusammen,

ich arbeite gerade an einem Programm, dass dynamisch Plugins laden können soll.

Ich habe eine Oberklasse Module, die von einzelnen Plugins realisiert wird und ich kann die einzelnen Funktionalitäten der Module über die Schnittstelle Module umsetzen. Nun möchte ich die einzelnen Plugins mit allen VIs und Unterklassen in eine Library packen und dann dynamisch in mein Hauptprogramm laden. Beim Kasten des Objektes "LV Objekt" der Funktion "LV-Klasse dynamisch erstellen" bekomme ich aber Fehler. Insbesondere dann, wenn ich versuche das Plugin in eine Klasse des Types *.lvlibp zu exportieren und dann in meine Hauptanwendung zu importieren. Den Fehler bekomme ich, obwohl die identischen Klassen aus dem Hauptprogramm zur Generierung der Lib verwendet werden.

Im Attachment habe ich mal angefügt, wie ich das probiert habe, dann wird es vielleicht ein wenig klarer.

Da ist natürlich auch noch ziemlich viel Mist drin. Die Lib und die Hauptanwendung werden aus dem gleichen Projekt erzeugt.

LG
David


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2011, 13:32
Beitrag #2

oenk Offline
LVF-Stammgast
***


Beiträge: 361
Registriert seit: May 2005

>= 7.1
2004
EN

3018
Schweiz
RE: Dynamische Vererbung über die Grenzen von Klassen hinweg
Schau mal hier bei Tomi Maila's blog, vielleicht hilft dir das weiter. Dort beschreibt er genau wie man Plugins dynamisch laden kann.
Sein Beispiel ist sehr hilfreich. Ich lade genau so meine Plugins und das funktioniert einwandfrei!

Ich hab jedoch meine Plugins aus dem Projekt entfernt, da sie sonst noch Abhängigkeiten erzeugt/erzeugen kann.
Mein physikalischer Projekt Ordner beinhaltet alle Unterordner und mehrere *.lvproj Dateien. Eine für das Hauptprojekt, welches ausführbar ist (Main.vi) und n-Plugin-Projekte. Somit sind keine Abhängigkeiten zu den Plugins im Main vorhanden, welche uU Probleme erzeugen können (hauptsächlich wenn du zur Laufzeit verschiedene .NET assemblies laden möchtest, dann sind diese Abhängigkeiten tödlich...)

(btw: es ist hilfreich, wenn du einen bereinigten Screenshot hochstellst, dann kann man sich auf's Wesentliche konzentrieren)

In theory, there is no difference between theory and practice; In practice, there is.

Chuck Reid
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.05.2011, 14:40
Beitrag #3

davidwm Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: May 2011

2010SP1
2008
DE


Deutschland
RE: Dynamische Vererbung über die Grenzen von Klassen hinweg
Danke,

Die Seite hatte ich auch schon gesehen und mich daran orientiert, aber das hat das Problem nicht gelöst.

Die 2 wesentlichen Unterschiede sind:
Ich wollte mit lvlibp arbeiten und nicht mit LLB
Ich habe alles in einem Projekt, vielleicht muss ich da noch mal was rausschmeißen, damit das etwas sauberer wird.

Ich gucke morgen noch mal etwas genauer, jetzt gibt es erstmal Feierabend. Smile

Danke schon mal, ich werde eventuell noch weitere Fragen stellen, wenn ich diese Hilfestellung ausgestestet habe.

LG
David
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2011, 12:25
Beitrag #4

davidwm Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: May 2011

2010SP1
2008
DE


Deutschland
RE: Dynamische Vererbung über die Grenzen von Klassen hinweg
Hallo,

so ich habe noch mal ein wenig weiter getestet: Hier das Ergebnis:

Die folgenden Popups ergeben sich aus dem Aufruf unten
   

   

Ich habe jetzt auch die Bibliothek, die ich hier einfüge aus dem Hauptprojekt gelöscht und ein weiteres Projekt erstellt, dass NUR die eingebundene Bibliothek und die davon abhängige Bibliothek mit der Basisklasse enthält.

Ich bekomme, wie ihr sehen könnt immer noch einen Fehler.

Vielen Dank!
David
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2011, 12:51
Beitrag #5

oenk Offline
LVF-Stammgast
***


Beiträge: 361
Registriert seit: May 2005

>= 7.1
2004
EN

3018
Schweiz
RE: Dynamische Vererbung über die Grenzen von Klassen hinweg
Hi David

kannst du mal ein Funktionsmuster von deinem Problem erstellen? Dann kann man mal damit rumspielen und sehen wie das ganze aufgebaut ist.
Oftmals hilft das einem auch selbst, da man sich dann wirklich nur auf das aktuelle Problem konzentriert.
Am Besten genau so wie dein Program aufgebaut ist, nur mit Dummy Modulen & Plugins.

In theory, there is no difference between theory and practice; In practice, there is.

Chuck Reid
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.05.2011, 14:05 (Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2011 14:06 von davidwm.)
Beitrag #6

davidwm Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: May 2011

2010SP1
2008
DE


Deutschland
RE: Dynamische Vererbung über die Grenzen von Klassen hinweg

Akzeptierte Lösung

Hallo noch mal,

so, ich habe nun einen weiteren Schritt unternommen und das ganze noch mal geprüft. Dabei habe ich die Lösung für das Problem gefunden.
Ich hänge mal meinen Testcase an, damit andere Leute mit dem gleichen Problem das ganze nachvollziehen können. Sorry ich habe es mit LV2010SP1 erstellt.

Problem:
Fehler beim "Typecasten" eines dynamisch erstellten LV-Objektes. Fehler 1448, siehe oben. Das ganze beim nutzen von Libp-Bibliotheken (LLBs sind weniger problematisch).

Lösung:
Bibliotheken KOMPLETT voneinander trennen, sodass es mindestens 3 Projekte gibt:
1. Lib1 (mit der Schnittstelle "ParentClass.lvclass")
--> KEINE externen Libs
2. Lib2 (mit der Implementierung der Schnittstelle "ChildClass.lvclass")
--> Externe Lib (im Projektbrowser): Endprodukt der Lib1 (hier also "Lib1.lvlibp") --> Klasse daraus als Parent-Object wählen.
3. Prog (mit dem späteren Programm)
--> Externe Lib (im Projektbrowser): Endprodukt der Lib1 (hier also "Lib1.lvlibp")
Nun kann in diesem Projekt die Klasse "ChildClass.lvclass" dynamisch erstellt werden und sowohl Lib1 als auch Lib2-Funktionen verwenden.

Ist ein wenig umständlich, aber so geht es.

Im Falle der LLBs geht es auch einfacher, aber ich wollte es hier gerne mit der lvlibp lösen.

Danke an <<oenk>>.

Gruß
David


Angehängte Datei(en)
Sonstige .zip  Test_DynamicCasting.zip (Größe: 110,65 KB / Downloads: 417)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Klassen mit komprimierten Bibliotheken 83DM 1 5.310 09.08.2016 13:45
Letzter Beitrag: BNT
  Klassen verbinden oryx 4 8.986 07.05.2015 15:33
Letzter Beitrag: oryx
  Zugriff auf Textlabels in Klassen cpinkle 12 17.166 09.09.2014 11:52
Letzter Beitrag: Kiesch
  Dateiorganisation mit Klassen - Verzeichnis umbennen? Kiesch 0 7.028 05.02.2014 13:19
Letzter Beitrag: Kiesch
Sad Klassen in aktivem Projekt modifizieren/austauschen schnuufe 5 11.323 24.02.2012 13:45
Letzter Beitrag: Kiesch
  Neuling, was bringen mir Klassen, LVOOP dali4u 6 16.477 24.02.2012 13:40
Letzter Beitrag: Kiesch

Gehe zu: