zwei DLLs in einer vereinen(?)
-
Hallo,
sorry falsch ich im falschen Bereich bin, aber über google
und die Suche hier finde ich keine schlüssige Anwort.Ich habe zwei DLLs, aaa.dll und bbb.dll (und die libs aaa.a
und bbb.b dazu) und möchte die Funktionen und Klassen aus
den beiden DLLs in einer dritten "vereinen", nämlich ccc.dll.Nun möchte ich in meiner Anwendung nur die ccc.dll bzw. die
Bibliothek ccc.a einbinden, jedoch auch die Funktionen aus
aaa und bbb nutzen.Wenn ich aaa und bbb in ccc mit einbinde kann ich dort auf die
Funktionen zugreifen, jedoch in meiner Anwendung nicht. In der
Anwendung müsste ich dafür die Libs von aaa und bbb mit einbinden
um die Funktionen daraus zu nutzen, das will ich ja aber nicht,
sondern halt die beiden DLLs in einer großen vereinen.Naja... hoffe das war irgendwie verständlich.
Gibt es da eine Möglichkeit ohne das ich aaa und bbb mit in meiner
Anwendung einbinden muss?edit:
Ach ja, ich nutzt mingw auf XP.Danke im voraus!
Grüße Stevan
-
Hmm aaa und bbb in ccc statisch mitlinken und dann in der anwendung dynamisch nutzen
-
Hmmm, aaa bzw. bbb hab ich ja als DLLs vorliegen,
die kann man ja nicht statisch laden (oder?).Meinst du das ich aus aaa bzw. bbb gleich statische
Bibliotheken bauen soll?Mir wären DLLs lieber da ich sie vielleicht auch mal
unabhängig von ccc nutzen will ohne alles in die
Anwendung zu prügeln (warum auch immer).
Grüße Stevan
-
Hast du von beiden DLL's den Source? Aber ich denke eher nicht, sonst würdest Du die Frage nicht stellen.. oder täusche ich mich?
Wenn du den Source nicht hast, gibts afaik keine Möglichkeit.
Lass mich aber gerne belehren :).
rya.
-
Hast du von beiden DLL's den Source? Aber ich denke eher nicht, sonst würdest Du die Frage nicht stellen.. oder täusche ich mich?
Den hab ich, die DLLs sind von mir selbst erstellt.
Mir is aber halt keine Möglichkeit bekannt ne DLL
statisch einzubinden...
Außer sie halt gleich als statische Bibliothek
bauen, aber dann wärs ja keine DLL mehr.Grüße Stevan
-
effe_eichelt schrieb:
Nun möchte ich in meiner Anwendung nur die ccc.dll bzw. die
Bibliothek ccc.a einbinden, jedoch auch die Funktionen aus
aaa und bbb nutzen.du kannst in ccc.dll aaa und bbb genau so benutzen, wie du aaa und bbb in einer .exe benutzen kannst und damit natürlich, indirekt, aaa und bbb über die ccc.dll. die import-libraries für aaa und bbb brauchst du dann nur noch in der .exe, wenn du funktionen aus aaa und bbb direkt aufrufen willst.
-
effe_eichelt schrieb:
Hast du von beiden DLL's den Source? Aber ich denke eher nicht, sonst würdest Du die Frage nicht stellen.. oder täusche ich mich?
Den hab ich, die DLLs sind von mir selbst erstellt.
Mir is aber halt keine Möglichkeit bekannt ne DLL
statisch einzubinden...
Außer sie halt gleich als statische Bibliothek
bauen, aber dann wärs ja keine DLL mehr.Grüße Stevan
Hmm, warum fügst du die Sourcen dann nicht zusammen und baust aus A und B eine DLL = C? Oder gibts da ein Problem damit?
rya.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
du kannst in ccc.dll aaa und bbb genau so benutzen, wie du aaa und bbb in einer .exe benutzen kannst und damit natürlich, indirekt, aaa und bbb über die ccc.dll. die import-libraries für aaa und bbb brauchst du dann nur noch in der .exe, wenn du funktionen aus aaa und bbb direkt aufrufen willst.
Hat ich auch schon probiert, aber mir wär lieber wenn ich nur
eine Lib mitlinken muss und die Anwendung trotzdem alles nutzen
kann.Hmm, warum fügst du die Sourcen dann nicht zusammen und baust aus A und B eine DLL = C? Oder gibts da ein Problem damit?
Eine DLL machen war auch meine erste Idee, aber ich würds schön
finden wenn ich z.B. ne DLL hab die Grundfunktionen bereit hält,
die dann von einer großen DLLs genutzt wird, und die große dann
von der Anw. die dann dadurch halt auch die Grundfunktionen
nutzen kann.Aber vielleicht hab ich auch mal ne Anwendung die nur bestimmte
Teile, z.B die Grund-DLL, nutzt... oder so.Hmm, andere Frage:
Gäbs die Möglichkeit in die große DLL die Prototypen aus den
kleineren mit in die Bibliothek zu schreiben? Sodass wenn ich die
Lib der großen DLL linke die Prototypen für die kleinen DLLs
bekannt sind?
Ich google mal...Naja, aber wenns keine Möglichkeit gibts, aus mehreren vorhandenen
DLLs eine große zu machen, kann ich damit leben.
-
Tut mir leid, wenn ich mich doof anstelle aber ich frag nochmal was:
Wenn ich das richtig verstanden habe, möchtest du lediglich, dass dein Programm die Funktionen von DLL A und B über die DLL C aufruft, richtig?Da würde ich von abraten, weil ich da keinen Sinn drin sehe... aus A + B eine große bauen wäre besser... dann hättest du auch nur eine Lib die du linken must. Aber die Funktionen noch durch eine dritte Lib zu schicken und am Ende doch wieder bei A oder B zu landen, das würde ich nicht machen.
rya.
-
Ach, stellst dich doch net doof an, ich bin doch der der
keine Ahnung hat.Na gut, ich erklärs mal genauer an nem Beispiel.
Ich hab einige Loggingroutinen die ich gerne in einer DLL
haben will, z.B. logger.dll. Diese DLL wird von einer
anderen DLL genutzt, die IOCP-Routinen bereitstellt,
network.dll genannt.Nun hab ich meine Anwendung die network.dll nutzt um
irgendwas zu machen.
Da meine Anwendung mir aber wenig Ausgaben gibt muss sie
ebenfalls bisserl loggen. Nun wollt ich halt, das ich über
die network.dll auch auf den Logger zugreifen kann.Andere Möglichkeit wäre z.B. das ich eine dritte DLL hab
die network.dll und logger.dll nutzt, blub.dll genannt.
Meiner Anwendung möchte ich jedoch nur die blub.dll linken
und ich trotzdem noch auf die Logging- bzw. Netzwerkroutinen
zugereifen kann.Oder in einer anderen Anwendung brauche ich nur die logger.dll,
wenn ich alles in einer dll hab lad ich ja den Rest mit den
ich gar nicht brauch...Ansonsten könnt ich in der großen DLL auch nen Wrapper
schreiben...Naja, ich glaub dir das es sinnfrei ist, ich bin sowieso zu
schlecht um was sinnvolles zu basteln.
Aber mir gehts grundlegend darum ob es möglich ist oder eben nicht.Hab grad noch bisserl rumprobiert, vll ginge es so...
Und zwar kann man sich beim erstellen der dlls und implib ja die
Prototypen(?) in eine .def Datei schreiben lassen.
Gibts da ne Möglichkeit diese so zu nutzen das ich dann einer
weiteren DLL sage: "hier hast du paar prototypen, den code dazu
findest du in der blabla.dll"?edit: Naja, das is im Grunde das normale linken der Bibliothek,
hmm, kA wie ichs jetzt erklären soll...