visual express lädt zu viele dlls?
-
Also z.B.
"GlBase.exe": "C:\Windows\SysWOW64\ole32.dll" geladen, Symbole wurden geladen.
auch wenn ole32.lib nicht geladen wird, ladet es scheinbar die dll dazu.
-
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 fileDas 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.
-
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
TranslateMessageDiese Funktionen bei ole32.dll aus?
CoCreateInstance
CoInitialize
CoUninitializeWas 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
-
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.
-
Bei Optionen->Debugging->Symbole Symbole automatisch laden. Alles klar. THX.