visual express lädt zu viele dlls?



  • Start mal deine Anwendung ohne Debugger.



  • Ich glaube die allermeisten davon brauche ich gar nicht

    Glaubst du.. 😉

    Das sind diverse System DLLs wovon die meisten davon nötig sind damit dein Programm überhaupt lauffähig ist.
    Durchaus möglich dass sie teilweise gar nicht benötigt werden und standardmäßig mitgeladen werden damit sie vorhanden sind. Allerdings weißt du ja auch nicht welche Abhängigkeiten der Dlls untereinander bestehen.



  • Wenn er keine Oberfläche hätte, wäre es viel weniger... aber er will wohl eine... bei mir werden nur die Folgenden geladen:

    'CPP_VS2010.exe': Loaded 'Y:\Test\CPP_VS2010\Debug\CPP_VS2010.exe', Symbols loaded.
    'CPP_VS2010.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
    'CPP_VS2010.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
    'CPP_VS2010.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file

    Das geht ruck-zuck...



  • Ja, durch bestimme Einstellungen und Features die das Programm haben soll wird dein Programm auch zusätzliche Dlls laden.
    ART / MFC / CRT benötigen natürlich auch entsprechende DLLs.

    Du könntest dir ja mal die Abhängigkeiten von deinem Programm mit z.B. Dependency Walker anschauen, dann solltest du rausfinden wodurch sie geladen werden bzw. welche Funktionen genutzt werden.


  • Gesperrt

    Danke für die Antworten.

    Also MFC und ATL sind ausgeschaltet. CRT (Laufzeitbibliothek) sind ohne dll eingestellt.

    Depedency Walker zeigt zuoberst im Baum genau die dlls an, die ich als LIB eingebunden habe:

    Ich finde auch das ole32.dll was ich gar nicht eingebunden habe. Wenn ich das richtig verstehe löst eine dieser Funktionen aus der User32 dll:

    CreateWindowExW
    DefWindowProcW
    DispatchMessageW
    GetClientRect
    GetDC
    GetMessageW
    LoadCursorW
    MoveWindow
    PostQuitMessage
    RegisterClassExW
    ShowWindow
    SystemParametersInfoW
    TranslateMessage

    Diese Funktionen bei ole32.dll aus?

    CoCreateInstance
    CoInitialize
    CoUninitialize

    Was ist mit Oberfläche gemeint? Das das Programm ein Fenster lädt oder die Oberfläche von Visual Express?



  • Diese dlls werden geladen, weil deine exe sie eben doch braucht 😉
    Was genau ist denn das Problem dabei?



  • Oberfläche = Fenster

    Wie schon gesagt, das ganze hat nix mit der Express-Edition zu tun. Du kannst Dein Programm auch mit g++ oder CodeBlocks übersetzen; gleiches verhalten...

    Du musst Dir mal anschauen, wie das mit der Oberfläche und den Plugins von Windows funktioniert... wenn Du z.B. einen OpenFileDialog aufmachst, werden noch viel mehr DLLs geladen 😉


  • Gesperrt

    Danke für die Antworten. Der Tipp mit Dependency Walker macht es durchschaubarer. 😃



  • @titan99_
    Du kannst Visual Studio so konfigurieren dass es die Debug-Symbole nicht lädt.
    Dann geht Debug-Session starten viel schneller.
    Dafür hast du dann natürlich keine Debug-Symbole mehr.


  • Gesperrt

    Bei Optionen->Debugging->Symbole Symbole automatisch laden. Alles klar. THX.


Anmelden zum Antworten