Forum: PC-Programmierung 2 DLL File in einen einzigen DLL kapeseln


von Niko (Gast)


Lesenswert?

Hallo alle Zusammen,


ich habe 2 DLL (DLL1--> QT und DLL2--> C++) File, die ich gerne in einen 
einzigen DLL File kapseln möchte.

Warum ich das mache?

Ich möchte die beide DLL in Labview importieren klappt leider nur bei 
erste DLL (c++ seite) und bei der andere QT_DLL hat nur Probleme.

Ich habe so gedacht, wenn ich die beide DLL in einem einzigen DLL File 
kapsele, dann kann die QT unbequämlichkeit umgehen.

ich weiss es nicht in voraus, ob es überhaupt funktionieren wird aber 
versuchen kann ich doch.


Für jeden Vorschlag bin ich dankbar.


Danke in Voraus
Niko

: Verschoben durch User
von doedel (Gast)


Lesenswert?

das Zauberwort heißt "Wrapper-DLL" oder "Wrapper-Klasse" ... einfach mal 
danach gurgeln.

von Niko (Gast)


Lesenswert?

Hallo erst mal danke.
Ich muss leider zugeben mit meine Google Suche bin ich nicht schlauer 
geworden?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Wäre es nicht schlauer mal das konkrete Problem zu benennen anstatt nach 
vermeintlichen Lösungen zu suchen?

von Niko (Gast)


Lesenswert?

Mir ist niht klar wie ich aus DLL1 und DLL2 einen einzigen DLL_gesamt 
kapseln kann?

von Dumdi D. (dumdidum)


Lesenswert?

Läubi .. schrieb:
> Wäre es nicht schlauer mal das konkrete Problem zu benennen anstatt nach
> vermeintlichen Lösungen zu suchen?

Hat er schon gemacht:
Beitrag "C++ DLL in Labview einbinden"
Und wie es aussieht nicht hinbekommen. Jetzt scheint die Strategie zu 
sein eine noch kompliziertere Lösung zu suchen.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Niko schrieb:
> Mir ist niht klar wie ich aus DLL1 und DLL2 einen einzigen DLL_gesamt
> kapseln kann?

Ich meinte her wieso eine DLL geht, zwei jedoch nicht und warum du 
vermutest das es mit einer "großen" klappt...

von Niko (Gast)


Lesenswert?

@Ich habe so gedacht, wenn ich beide DLL(C++_DLL und QT_DLL) File in 
einem DLL_gesamt einkapsele dann kann ich die Problematik, die durch den 
QT (Signal und Slot) beim Labview  problemfrei exportieren.


Das ist eigentlich nur theoretisch.

Danke in voraus

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Niko schrieb:
> @Ich habe so gedacht, wenn ich beide DLL(C++_DLL und QT_DLL) File in
> einem DLL_gesamt einkapsele dann kann ich die Problematik, die durch den
> QT (Signal und Slot) beim Labview  problemfrei exportieren.

Versteht irgendjemand, was Niko uns damit zu sagen versucht?

von Niko (Gast)


Lesenswert?

Hallo,

:-)

Ich versuche noch mal das Problem zu schildern:


Meine Projeckt hat die folgende Architektur:

                 -------
                ¦       ¦
                ¦  GUI  ¦
                ¦       ¦
                 -------
                    ¦
                    ¦
                    ¦
                   DLL2 (QT_DLL)
                    ¦
                    ¦
                    ¦
                   DLL1 (C++ DLL)


Ich möchte aus der obene Architektur so redesignen :

                 -------
                ¦       ¦
                ¦  GUI  ¦
                ¦       ¦
                 -------
                    ¦
                    ¦
                    ¦
                    ¦
              --------------
             ¦              ¦
             ¦  DLL_Gesamt  ¦
             ¦              ¦
              --------------

von Michael (Gast)


Lesenswert?

Weder hast du beschrieben, was nun das Problem mit Signals und Slots ist 
(die tauchen in deinem Monster-ASCII-Art gar nicht auf), noch ist das 
überhaupt dein Problem.

Das ist dein (ziemlich bescheuerter - sorry!) Lösungsansatz.

Wenn du dein Problem beschreibst, stehen die Chancen gut, daß es richtig 
gelöst werden kann.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Niko schrieb:
> Ich versuche noch mal das Problem zu schildern:

Das ist nicht das Problem, das ist Dein Versuch, das völlig 
andersgelagerte Problem zu "lösen".

Das hier ist das, was Du bislang zum eigentlichen Problem geschrieben 
hast:

> Ich möchte die beide DLL in Labview importieren klappt leider nur bei
> erste DLL (c++ seite) und bei der andere QT_DLL hat nur Probleme.

von Niko (Gast)


Lesenswert?

Michael schrieb:
> Das ist dein (ziemlich bescheuerter - sorry!) Lösungsansatz.

:-)



Wenn ich die (QT_DLL) mit Labview exportiere könnte es keine Methode 
exportiert werden und deswegen ist die obere Lösungsansatz, wenn es 
bescheuert ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Niko schrieb:
> Wenn ich die (QT_DLL) mit Labview exportiere könnte es keine Methode
> exportiert werden und deswegen ist die obere Lösungsansatz, wenn es
> bescheuert ist.

Kannst Du wenigstens versuchen, das noch mal zu formulieren?

Verwechselst Du exportieren und importieren?

von Niko (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Kannst Du wenigstens versuchen, das noch mal zu formulieren?
>
> Verwechselst Du exportieren und importieren?

:-)


Sorry

Wenn ich die (QT_DLL) mit Labview importiere könnte es keine Methode
exportiert werden und deswegen ist die obere Lösungsansatz, wenn es
bescheuert ist.

von Michael (Gast)


Lesenswert?

Niko schrieb:
> Wenn ich die (QT_DLL) mit Labview importiere könnte es keine Methode
> exportiert werden und deswegen ist die obere Lösungsansatz, wenn es
> bescheuert ist.

Das ist genauso beschissen formuliert.

"könnte es keine Methode exportiert werden" ist völlig ungrammatisch, 
und man kann auch mit viel gutem Willen nicht erraten, was das bedeuten 
soll.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Fang vielleicht noch weiter vorne an.

Warum willst Du eine Qt-Dll in LabView importieren? Wozu soll das gut 
sein? Willst Du direkt aus LabView Qt-Funktionen aufrufen? Wenn ja: 
Warum bloß?

Oder ist es so, daß Deine andere DLL QT-Funktionen aufruft? Dann 
sollte die Qt-DLL für LabView keinerlei Rolle spielen, sie muss nur an 
der richtigen Stelle vorhanden sein, damit sie bei Gebrauch von Deiner 
DLL bzw. dem windows-eigenen Programmlader geladen werden kann.

von Niko (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Warum willst Du eine Qt-Dll in LabView importieren?

Da ich bestimmte Funktionen in Labview exportieren möchte.

Rufus Τ. Firefly schrieb:
> Wozu soll das gut
> sein?

Ob das gut ist, weiss ich nicht.
Wir wollen zu unsere Kunden einen Labview Schnittstelle bieten.

Rufus Τ. Firefly schrieb:
> Willst Du direkt aus LabView Qt-Funktionen aufrufen?

ja

Rufus Τ. Firefly schrieb:
> Warum bloß?

Weil ich keine andere Möglichkeit habe.
Da das DLL einen QT_DLL ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Niko schrieb:
> Wir wollen zu unsere Kunden einen Labview Schnittstelle bieten.

Versuch doch bitte nochmal, Dein Anliegen zu formulieren.

Was willst Du?

Willst Du eine DLL schreiben, die (aus welchen Gründen auch immer) 
Qt-Funktionalität nutzt (also selbst eine Qt-DLL verwendet), damit 
andere Leute diese DLL wiederum mit LabView verwenden können?

Oder willst Du mit LabView selbst irgendwelche Qt-Funktionen 
verwenden?


Du machst es einem wirklich schwer, zu verstehen, was Du sagen möchtest.


Und was genau hast Du bereits unternommen, und an welcher Stelle genau 
hakt es?

Gibt es Fehlermeldungen? Wenn ja, an welcher Stelle?

von doedel (Gast)


Lesenswert?

und versuch auch bitte klar zwischen importieren und exportieren zu 
unterscheiden! Bislang scheint es so, als würdest Du die Begriffe immer 
bunt mischen und das erleichtert das Verständnis auch nicht unbedingt!

von Georg (Gast)


Lesenswert?

Niko schrieb:
> Wir wollen zu unsere Kunden einen Labview Schnittstelle bieten.
>
> Rufus Τ. Firefly schrieb:
>> Willst Du direkt aus LabView Qt-Funktionen aufrufen?
>
> ja
>
> Rufus Τ. Firefly schrieb:
>> Warum bloß?
>
> Weil ich keine andere Möglichkeit habe.
> Da das DLL einen QT_DLL ist.

Vielleicht liege ich ja völlig falsch, aber ist nicht für den Benutzer 
Labview die GUI, die er benutzt? Wer sagt denn, dass man da Funktionen 
einer anderen GUI reinmischen kann?

doedel schrieb:
> das Zauberwort heißt "Wrapper-DLL" oder "Wrapper-Klasse"

Das ist nicht sein Problem, sofern man dazu überhaupt was Sicheres sagen 
kann. Wenn seine Zeichnung stimmt, sieht das Hauptprogramm die Qt-DLL 
garnicht, die C++-DLL ist sozusagen schon der Wrapper. Eigentlich will 
er die DLLs nur zusammenlinken, so dass die C++-Aufrufe innerhalb der 
DLL die Qt-Funktionen aufrufen. Das Interface zum Hauptprogramm ändert 
sich garnicht.

Nach seiner Formulierungskunst kann aber auch alles ganz anders sein.

Georg

von Niko (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Hier ist mein Anliegen (seh Anhang):

Rufus Τ. Firefly schrieb:
> Willst Du eine DLL schreiben, die (aus welchen Gründen auch immer)
> Qt-Funktionalität nutzt (also selbst eine Qt-DLL verwendet), damit
> andere Leute diese DLL wiederum mit LabView verwenden können?
>

Ich möchte eine DLL schreiben, damit andere Leute diese DLL wiederum mit 
LabView verwenden können

> Oder willst Du mit LabView selbst irgendwelche Qt-Funktionen
> verwenden?
nein.
Ich möchte nicht eine reine QT-Funktionen verwenden.


Rufus Τ. Firefly schrieb:
> Und was genau hast Du bereits unternommen, und an welcher Stelle genau
> hakt es?
>
Ich habe versucht DLL2 in Labview zu importieren.
Beim import, wird keine Funktionen exportiert.
problem ist : DLL2 ist in C++ geschrieben.
Es beinhaltet klassen, komplizierte Datenstrukturen..., was vielleicht 
nicht Benutzerfreundlich für Labview.

> Gibt es Fehlermeldungen? Wenn ja, an welcher Stelle?
Wie soll ich am besten vorgehen (mit Labview habe ich selber keine 
Erfahrung)?
Soll ich als erste die beide DLL(DLL1 und DLL2) in einem einzigen DLL 
kapseln?
Warum ich das so mache?
@ die beide DLL hängen von einander ab. das heisst wenn ich irgend eine 
Funktionen von DLL2 aufrufe(ZB: Strommessung),wird DLL1 aufjedenfall 
gebraucht(Befehl wird zu PICBorad weitergeleitet).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Niko schrieb:
> Ich habe versucht DLL2 in Labview zu importieren.

Wozu?

Wenn alles für LabView relevante in DLL1 enthalten ist, und DLL1 
Funktionen aus DLL2 nutzt, ist es überhaupt nicht erforderlich, DLL2 in 
LabView zu importieren.

von Fritz (Gast)


Lesenswert?

Was du machen sollst?

Formuliere klar und verständlich, was du willst.

In deiner Muttersprache.

Gib das bei Google Translate ein.

Poste das Ergebnis hier.

von Niko (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Wozu?
>
> Wenn alles für LabView relevante in DLL1 enthalten ist, und DLL1
> Funktionen aus DLL2 nutzt, ist es überhaupt nicht erforderlich, DLL2 in
> LabView zu importieren

DLL1 ist der untere Schicht und die Funktionen, die ich brauche befinden 
sich in DLL2.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ich geb's auf.

von Niko (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Ich geb's auf.

Ich danke es dir trotzdem

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Niko schrieb:
> Ich möchte eine DLL schreiben, damit andere Leute diese DLL wiederum mit
> LabView verwenden können

Dann solltest du dir die Doku von LabView herholen und schauen welche 
Konventionen Labview benötigt.

Als zweiten Schritt solltest du dann ein Minimal-Beispiel erstellen, 
welches z.B. eine Funktion hat welche eine feste Zahl zurückliefert.

Dieses dann in Labview Importieren und schauen das alles klappt wie 
gewünscht.

DANN kann man langsam beginnne zu überlegen, wie man die bestehnde 
Struktur in sinnvollerweise über Labview bereitstellt, das kann dan im 
Zweifel auch eine "DLL3" sein welche dedizierte Konverter enthalten 
welches "deine Welt" in die "LabView Welt" übersetzt und INTERN (also 
ohne das Labview was davon mitbekommt) DLL1+DLL2 benutzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.