2 DLL File in einen einzigen DLL kapeseln

Gast #3714393
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
Gast #3716239
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
Gast #3716260
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  ¦
             ¦              ¦
              --------------
Gast #3716268
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.
Persönliche Seite #3716275
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.
Gast #3716300
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.
Persönliche Seite #3716307
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.
Gast #3716688
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.
Persönliche Seite #3716728
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?
Gast #3716744
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!
Gast #3717306
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
Gast #3717390
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).
Angehängte Dateien:
Persönliche Seite #3717542
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren