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 

alle funktionen aus C++ dll ausgeben lassen



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!

10.09.2012, 11:39
Beitrag #1

bautz0815 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Aug 2011

2010
2010
DE


Deutschland
alle funktionen aus C++ dll ausgeben lassen
Hallo LV-Gemeinde,

wir haben in der Firma eine dll Bibliothek die in C++ geschrieben wurde und verschiedene Funktionen zur Verfügung stellt. Ich habe ein Tool geschrieben mit der ich die Funktionen der dll-Bibliothek testen kann. Im Laufe der Zeit kommen neue Funktionen dazu. Es wurde jetzt der Wunsch geäußert, dass nur die enthaltenen Funktionen auf dem FP aktiv sind. Die restlichen Funktionen die in der geladenen dll nicht vorhanden sind sollen Deaktiviert und ausgegraut sein.

Soweit zur Vorgeschichte des Projektes und nun zu meinen Fragen.

Ist es möglich alle Funktionen aus der dll auszulesen und in einem Array zu speichern?
Ich habe jetzt einen Versuch gestartet die Funktionsnamen mit einer INI zu laden (für jede dll-Version eine Abschnitt) und in ein Array abgelegt, funktioniert auch ist jedoch ein Wahnsinns Aufwand die einzelnen Unterschiede der dll-Versionen zu filtern und in die INI einzutragen (ca.120Funktionen).

Und noch eine zweite Frage.
Wie kann ich auf dem FP die entsprechenden Elemente Deaktivieren. Diese sind in 3-Registerkartenreiter mit Unterregisterkarten abgelegt. Ich müsste jetzt die einzelnen Arrayelemente mit den FP-Elementen Vergleichen und je nachdem Aktiv oder Inaktiv schalten.
Gibt es dafür eine Möglichkeit diese Elemente anzusprechen oder muss ich für jedes einzeln eine Referenz bilden um dann den Eigenschaftsknoten deaktiviert wählen.
Da leidet auch die Übersicht im BP bei über 100 Funktionen und wenn eine neue dazukommt muss man aufpassen, dass diese auch überall eingetragen ist.

Ich danke allen schon mal im Voraus.
bautz0815
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.09.2012, 18:55 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2012 18:55 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: alle funktionen aus C++ dll ausgeben lassen
(10.09.2012 11:39 )bautz0815 schrieb:  Hallo LV-Gemeinde,

wir haben in der Firma eine dll Bibliothek die in C++ geschrieben wurde und verschiedene Funktionen zur Verfügung stellt. Ich habe ein Tool geschrieben mit der ich die Funktionen der dll-Bibliothek testen kann. Im Laufe der Zeit kommen neue Funktionen dazu. Es wurde jetzt der Wunsch geäußert, dass nur die enthaltenen Funktionen auf dem FP aktiv sind. Die restlichen Funktionen die in der geladenen dll nicht vorhanden sind sollen Deaktiviert und ausgegraut sein.

Soweit zur Vorgeschichte des Projektes und nun zu meinen Fragen.

Ist es möglich alle Funktionen aus der dll auszulesen und in einem Array zu speichern?
Ich habe jetzt einen Versuch gestartet die Funktionsnamen mit einer INI zu laden (für jede dll-Version eine Abschnitt) und in ein Array abgelegt, funktioniert auch ist jedoch ein Wahnsinns Aufwand die einzelnen Unterschiede der dll-Versionen zu filtern und in die INI einzutragen (ca.120Funktionen).

Und noch eine zweite Frage.
Wie kann ich auf dem FP die entsprechenden Elemente Deaktivieren. Diese sind in 3-Registerkartenreiter mit Unterregisterkarten abgelegt. Ich müsste jetzt die einzelnen Arrayelemente mit den FP-Elementen Vergleichen und je nachdem Aktiv oder Inaktiv schalten.
Gibt es dafür eine Möglichkeit diese Elemente anzusprechen oder muss ich für jedes einzeln eine Referenz bilden um dann den Eigenschaftsknoten deaktiviert wählen.
Da leidet auch die Übersicht im BP bei über 100 Funktionen und wenn eine neue dazukommt muss man aufpassen, dass diese auch überall eingetragen ist.

Nun angehängtes VI gibt Dir alle Exports zu einer DLL. Caveats: Kein C source code, sorry and only für 32 Bit Windows. Ich hatte noch keine Zeit eine 64 Bit Version zu kompilieren und sehe dafür auch keine Notwendigkeit auf kurzen Termin.

Zum deactivieren von Controls, Du solltest wohl den entsprechenden Code parametrisieren und eventuel in Stacked Sequenzen aufteilen. Dies ist eine der Ausnamen wo ich Stacked Sequenzen als zulässig erachte.


Angehängte Datei(en)
6.2 .vi  Get DLL Exports.vi (Größe: 44,11 KB / Downloads: 413)

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
11.09.2012, 11:09
Beitrag #3

bautz0815 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Aug 2011

2010
2010
DE


Deutschland
RE: alle funktionen aus C++ dll ausgeben lassen
Hallo Rolf,

danke für die angebotene Lösung, das ist genau das was ich gesucht habe. Das Array kann ich mir noch zurechtbasteln.

Mit dem controls-Problem, verstehe ich das richtig, ich soll zuerst in einer gestapelten Struktur prüfen ob die die entsprechende Funktion vorhanden ist und den button auf enable setzen?
Das ist einläuchtend, nur wenn die Funktion nicht vorhanden ist startet das VI nicht. Es meldet "Der Funktionsname konnte in der Bibliothek nicht gefunden werden. Mit einem Rechtsklick auf den Knoten "Aufruf externer Bibliotheken" und Auswahl von "Konfigurieren" können Sie den richtigen Funktionsnamen angeben."
Wie kann ich diesen Fehler abfangen?

Das Haupt VI läuft mit einer Ereignisstruktur in der dann die einzelnen Funktionen mit einem Polymorphen SubVI eigefügt sind. Reagierend auf das Ereigniss Wertänderung Controls FALSE auf TRUE (Taste getrückt).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2012, 12:17 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2012 12:18 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: alle funktionen aus C++ dll ausgeben lassen
(11.09.2012 11:09 )bautz0815 schrieb:  Hallo Rolf,

danke für die angebotene Lösung, das ist genau das was ich gesucht habe. Das Array kann ich mir noch zurechtbasteln.

Mit dem controls-Problem, verstehe ich das richtig, ich soll zuerst in einer gestapelten Struktur prüfen ob die die entsprechende Funktion vorhanden ist und den button auf enable setzen?
Das ist einläuchtend, nur wenn die Funktion nicht vorhanden ist startet das VI nicht. Es meldet "Der Funktionsname konnte in der Bibliothek nicht gefunden werden. Mit einem Rechtsklick auf den Knoten "Aufruf externer Bibliotheken" und Auswahl von "Konfigurieren" können Sie den richtigen Funktionsnamen angeben."
Wie kann ich diesen Fehler abfangen?

Das Haupt VI läuft mit einer Ereignisstruktur in der dann die einzelnen Funktionen mit einem Polymorphen SubVI eigefügt sind. Reagierend auf das Ereigniss Wertänderung Controls FALSE auf TRUE (Taste getrückt).

Dazu gibt es zwei Lösungsansätze, da Performance bei einer benützergesteuerten Interaktion sicher kein Punkt sein wird. Entweder rufst Du die VIs, die nicht vorhandene DLL Funktionen ansprechen können, dynamisch mittels Call By Reference auf; oder Du verwendest die Option in der Call Library Node um den Path zur DLL auf dem Diagram anzugeben. In beiden Fällen wird die DLL Referenz erst beim Aufrufen aufgelöst und damit sollte das Problem gelöst sein, schliesslich hast Du ja die Funktion die diesen Aufruf started (hoffentlich) korrekt disabled.

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
18.09.2012, 08:19
Beitrag #5

bautz0815 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Aug 2011

2010
2010
DE


Deutschland
Smile RE: alle funktionen aus C++ dll ausgeben lassen
Hallo Rolf,

ich danke Dir für deine Hilfe, es funktioniert genau so wie ich es mir vorgestellt habe.
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
  Rückgabezeiger bei DLL-Funktionen TR6 2 6.100 21.12.2011 16:05
Letzter Beitrag: TR6
  CallBack Funktionen in C für LV spamer84 3 7.476 07.05.2008 19:56
Letzter Beitrag: rolfk

Gehe zu: