Одним из источников подсказки, позволяющей различать версии VC, является связанная конкретная библиотека времени выполнения C. Поскольку по умолчанию (по крайней мере, в современных версиях) используется ссылка на DLL, это довольно легко сделать. Утилита Dependency Walker почти незаменима для проверки того, что вы знаете, какие библиотеки DLL действительно загружаются, и она сообщит вам об этом. какая DLL среды выполнения C используется. Хотя Dependency Walker включен в Microsoft Platform SDK, он был расширен независимо, и сайт, на который я дал ссылку, является домом для его текущей разработки.
VC6 и MinGW по умолчанию ссылаются на MSVCRT.DLL, поэтому их нельзя различать. Приложив некоторые усилия, MinGW можно также связать с более поздними версиями среды выполнения C, поэтому вам нужно будет самостоятельно исключить MinGW.
Runtime VC Version
---------- -------------
MSVCRT.DLL VC6
MSCVR80.DLL VC8 (VS 2005)
MSCVR90.DLL VC9 (VS 2008)
Другие библиотеки DLL времени выполнения также будут хорошими подсказками, например. ссылки на среду выполнения Delphi, вероятно, указывают на то, что EXE на самом деле был создан из Delphi, а вовсе не из цепочки инструментов C.
Если символы не были удалены из файла .EXE, вы можете найти некоторые подсказки, из которых присутствуют внутренние символы. Например, ссылка на что-то вроде _sjlj_init
, вероятно, указывает на то, что в какой-то момент был задействован MinGW GCC 3.x, настроенный для обработки исключений setjmp/longjmp.
person
RBerteig
schedule
18.04.2009