list als rückgabewert einer dll klasse



  • Ich denke schon das er das gemeint hat. Es gibt dann nämlich nur eine Runtimedll für deine Dll und für dein Hauptprogramm.



  • Ja, aber ich kann nicht statisch linken. Ich bin auf dynamic linking angewiesen, da ich eine variable anzahl an Bibliotheken habe.



  • Erstens sollst du ja gerade dynamisch linken und zweitens kannst du doch für jede Bibliothek separat entscheiden ob du statisch oder dynamisch arbeiten willst.



  • Braunstein schrieb:

    Erstens sollst du ja gerade dynamisch linken und zweitens kannst du doch für jede Bibliothek separat entscheiden ob du statisch oder dynamisch arbeiten willst.

    Naja so einfach ist das nicht, da die Bibliotheken dann später variabel dazukommen, aber irgendwie hab ich jetzt völlig den Überblick verloren.

    Wie kann ich denn eine dll erstellen und dabei auf statische bindung setzen?
    Beim erstellen meiner DLL wird ebenso eine lib erstellt. Die wird auch von mir in mein Programm eingebunden. Ist das schon das, wovon wir die ganze Zeit reden?

    Wenn nicht, könnt ihr mir nochmal erklären wie ihr das alles meint?



  • Genau, das ist statische Bindung. Was wir meinten ist aber noch etwas anderes. Statt einer dll kanst du auch eine lib verwenden in der alles drin ist was du brauchst. Bei der Runtimedll würde das bedeuten, dass du alle Funktionen asu der RTL die du brauchst mit in dein Programm gelinkt werden und dann keine dll gebraucht wird.



  • Ich meine dass man die C++ Runtime Library wo "new" und "delete" und 100 andere Sachen implementiert sind als DLL linken soll. Damit gibt es nurmehr eine Version von "new" und "delete" die alle verwenden, und nurmehr einen Heap, und eben kein Problem mehr.
    Beim MSVC nennt sich das "Runtime Library: Multi-threaded DLL" oder auch "/MD".

    Klar muss auch überall der selbe Compiler und die selbe STL verwendet werden, bloss das ist auch nicht anders wenn man LIBs verwendet.



  • Hallo hustbaer.

    Danke für den konkreten Hinweis auf die Einstellung.
    "Multi-threaded DLL" war bei mir schon eingestellt, aber halt nur "Multi-threaded DLL". In meiner Hauptapplikation war "Multi-threaded DLL Debug" eingestellt (was ja auch richtig ist wenn das Projekt als Debug eingestellt ist) und dieser Unterschied verursacht den Derferenzierungsfehler.

    Nachdem ich in allen Projekten diese Option einheitlich auf "Multi-threaded DLL Debug" eingestellt hatte, funktioniert auch mein Code.

    Danke an alle für die Tipps.

    Grüße
    Daimonion


Anmelden zum Antworten