MenageZero
12-04-2010, 20:41
Stavo giocherellando un po' con Visual Studio 2010 RC1,
ho notato che anche compilando il più minimale "hello world" (compilato con linking dinamico al c/c++ runtime, opzione /MD del compilatore a linea di comando), avendo cura di non avere riferimenti kernel32.lib nelle proprietà di progetto, l'eseguibile ha poi sempre una dipendenza diretta da kernel32.dll
(anche senza usare l'ide e relativi file di progetto, compilando semplicemente un main.cpp dal prompt con cl.exe)
(ho controllato con il tool dependency walker e con uno a linea di comando di cui non mi ricordo il nome, incluso con v.s.)
mi aspettavo che l'eseguibile dipendesse direttamente solo da msvcr100.dll e msvcp100.dll, e che eventuali ulteriori dipendenze da altri moduli fossero indirette.
quindi la domanda (scusate la banalità :stordita: ) è: è così che deve essere e basta o c'è qualcosa che mi sfugge e quindi si potrebbe compilare del codice che non usa direttamente alcuna api di sistema senza che ci sia dipendenza diretta con kernel32.dll ?
ho notato che anche compilando il più minimale "hello world" (compilato con linking dinamico al c/c++ runtime, opzione /MD del compilatore a linea di comando), avendo cura di non avere riferimenti kernel32.lib nelle proprietà di progetto, l'eseguibile ha poi sempre una dipendenza diretta da kernel32.dll
(anche senza usare l'ide e relativi file di progetto, compilando semplicemente un main.cpp dal prompt con cl.exe)
(ho controllato con il tool dependency walker e con uno a linea di comando di cui non mi ricordo il nome, incluso con v.s.)
mi aspettavo che l'eseguibile dipendesse direttamente solo da msvcr100.dll e msvcp100.dll, e che eventuali ulteriori dipendenze da altri moduli fossero indirette.
quindi la domanda (scusate la banalità :stordita: ) è: è così che deve essere e basta o c'è qualcosa che mi sfugge e quindi si potrebbe compilare del codice che non usa direttamente alcuna api di sistema senza che ci sia dipendenza diretta con kernel32.dll ?