Libs und Dll's und Linking



  • Das ganze ist jetzt kompliziert zu beschreiben. Bin mir nichtmal sicher obs dafür eine "relativ" einfache lösung gibt.

    Folgendes Szenarion.

    Core.dll definiert einige wichtige klassen und funktionen. (wird mit UCoreLib.lib gelinked)
    UCoreLib.lib enthält einige unmanaged Klassen und wird von der Core.dll benötigt
    prinzipiell würde sie einige Klassen enthalten welche die Core.dll benötigen.

    Lib1, Lib2, ..., LibN sind unmanaged Libs welche Funktionen aus UCoreLib.lib verwenden. Aber mit der Core.dll gelinkt werden.

    ToolLib1, ToolLib2 .... sind unmanaged Libs welche funktionen aus der UCoreLib.lib benötigen aber nicht zur Core.dll gelinkt werden.

    Wie krieg ich das ganze unter einen Hut? Das mit UCoreLib.lib geht nicht da es ein Zirkelbezug wäre. Teile ich das ganze auf CoreLib1.lib und CoreLib2.lib auf wobei Core.dll CoreLib1.lib benötigt um compilierbar zu sein. CoreLib2.lib ist der Teil der die Core.dll braucht. Dabei bietet aber CoreLib2.lib eine Funktion an welche Lib1 - LibN brauchen, worauf ich hier wieder einen Zirkelbezug habe. Gibts ggf andere ansätze das auseinander zu dröseln? Wichtig ist das ich Lib1 - LibN nicht in der Hand habe. Genauso wenig ToolLib1 - ToolLibN.



  • Vielleicht kann ichs etwas anders, einfacher erklären.

    Es soll hinterher möglichst nur eine .net dll herauskommen. Diese enthält von mir geschriebene Klassen und viele andere Klassen. Zusätzlich auch Klassen für die Interop. Zusätzlich existieren jetzt schon einige Libs. Diese beinhalten sehr sehr viel nativen Quellcode. Diese werden auch statisch zu der dll gelinkt. Dummerweise brauchen sie auch eine möglichkeit die von mir geschrieben .Net Klasse zu nutzen. Daher hab ich Wrapper für natives C++ geschrieben und eine Factory mit der man die .Net klassen anlegt. Nun ist das Problem, wie krieg ich die information über das Factory in diese libs ohne das ein Zirkelbezug entsteht. Erstelle ich eine eigene Lib, welche die Factory enthält benötigt die ja eine Referenz auf die Dll. Sollen nun die anderen Nativen libs das nutzen drehen wir uns im Kreis (da diese Libs ja zu der dll gelinkt werden). Mir fällt gerade keine sinnvolle alternative ein.



  • Du kannst dieses Problem so nicht lösen.
    Du musst Dir eine klare Projektstruktur überlegen, wo Du solche Abhängikeiten vermeidest oder mit (abstracten) Basisklassen/Interfaces überwindest.



  • ich kanns mir leider nicht aussuchen. Die Projektstruktur gebe ich nichtmal vor. Ich krieg nur wünsche vorgesetzt und dazu noch ein haufen restriktionen. Eine Lösung des ganzen wäre das ganze in 2 dll's aufteilen. Die Core.dll in der die ganzen libs mit reingelinkt werden und eine andere dll die meine Klassen enthält. Es bestehlt halt die angst das dadurch ein Wildwuchs an dll's entsteht. Wie schon gesagt ich hab mir die Restriktionen nicht ausgesucht, bin nur gezwungen damit was möglich zu machen.


Anmelden zum Antworten