Una fonte di un suggerimento per distinguere tra le versioni VC è la libreria di runtime C specifica collegata. Poiché il caso predefinito è (almeno nelle versioni moderne) di collegarsi alla DLL, questo è abbastanza facile da fare. L'utilità Dependency Walker è quasi indispensabile per verificare che tu sappia quali DLL vengono realmente caricate e ti dirà quale C runtime DLL è in uso. Sebbene Dependency Walker sia incluso nel Microsoft Platform SDK, è stato esteso indipendentemente e il sito I collegato è la sede del suo attuale sviluppo.
VC6 e MinGW si collegano entrambi a MSVCRT.DLL per impostazione predefinita, pertanto non sarà possibile distinguerli. Con qualche sforzo, MinGW può essere creato per collegarsi anche alle successive versioni di runtime C, quindi dovrai escludere autonomamente MinGW.
Runtime VC Version
---------- -------------
MSVCRT.DLL VC6
MSCVR80.DLL VC8 (VS 2005)
MSCVR90.DLL VC9 (VS 2008)
Altre DLL di runtime potrebbero essere anche buoni indizi, ad es. i riferimenti al runtime di Delphi probabilmente indicano che l'EXE è stato effettivamente creato da Delphi e non da un toolchain C.
Se i simboli non sono stati eliminati dal file .EXE, è possibile trovare alcuni indizi dai quali sono presenti simboli interni. Ad esempio, un riferimento a qualcosa come _sjlj_init
indica probabilmente che un GCC 3.x MinGW configurato per la gestione delle eccezioni setjmp/longjmp era coinvolto in qualche punto.
Che cosa sta guidando per aver bisogno di queste informazioni? – ojblass
Prima di tutto, chiedendo quale versione di VS è stata utilizzata per costruire alcuni dei binari che abbiamo qui. (Stavo pensando di ricostruirli con una versione più recente di VS per un aumento delle prestazioni quasi gratuito.Ho trovato qualcuno che conosce la risposta per questi particolari binari, ma sono curioso di sapere se può essere fatto in generale. – kquinn
Non è la risposta in questo caso solo per ricostruire utilizzando il compilatore più recente in ogni caso? O ricompilate usando lo stesso compilatore, senza apportare modifiche, o finisci per usare un compilatore più recente, offrendoti i vantaggi che hai menzionato. – jalf