Hallo ihr weisen LabVIEWianer,
ich hoffe auf Rat von eurer Seite: Ich würde gerne eine DLL mit überladenen Funktionen kreieren. Ist dies grundsätzlich möglich? Über gleich Prototypennamen mit unterschiedlichen Anschlüssen habe ich es bereits probiert, jedoch wird der Build mit einem nicht beschriebenen Error abgebrochen.
Wäre sehr dankbar über hilfreichen Rat.
Gruß,
Der Schorsch
' schrieb:Ich würde gerne eine DLL mit überladenen Funktionen kreieren.
Ich gehe davon aus, du willst eine DLL in LV schreiben.
Zitat:Ist dies grundsätzlich möglich?
Weiß ich nicht. Ich denke aber eher nicht.
Zitat:Über gleich Prototypennamen mit unterschiedlichen Anschlüssen habe ich es bereits probiert, jedoch wird der Build mit einem nicht beschriebenen Error abgebrochen.
Hinter jeder überladenen Funktion - und polymorphe VIs sind nichts anderes - steht eine bestimmte Anzahl expliziter Funktionen. Das ist auch in textorientierten Sprachen so. Welche der gleichnamigen Funktionen letztendlich verwendet wird, entscheidet der Kompiler! Und zwar anhand der zur Entwurfszeit in die überladene Funktion eingesetzten Parametertypen und Parameteranzahlen.
Hat eine überladene Funktion z.B. zwei explizite Funktionen mit unterschiedlichen Anzahlen von Parametern, so kann der "DLL-Manager" dies nicht verarbeiten. Der muss nämlich die erforderliche Anzahl von Parameters auf den Stack legen. Würde er die überladene Funktion verwenden wollen und also nichts von den expliziten wissen, so hat er ein Problem: Wie viele Parameter auf den Stack legen?
Du kannst aber folgendes machen, sowohl in textorientiert als auch in LV: Die DLL liefert nur explizite Funktionen. In der aufrufenden Applikation erstellt du nun ein polymorphes VI, das aus VIs besteht, die nur jeweils einem DLL-Aufruf haben.
Es gibt in C++ zwar die Möglichkeit, an Unterprogramme eine variable Anzahl von Parametern zu übergeben. Ob das aber auch in DLLs üblich ist, weiß ich auch nicht.
Ich rate dazu, die DLL-Schnittstelle so einfach wie möglich zu halten - also ohne überladene Funktion in der Schnittstelle.
Hey,
du hast meine Gedankengänge gut nach gedacht und dir richtigen schlüsse gezogen. Danke für die Antwort, werde jetzt also explizit einzelne Funktionen implemetieren