Один источник намека на различие между версиями VC - это связанная с ним библиотека времени выполнения. Поскольку по умолчанию используется (по крайней мере, в современных версиях) ссылка на DLL, это довольно легко сделать. Утилита Dependency Walker практически незаменима для проверки того, что вы знаете, какие 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 в режиме runtime также будут полезными. ссылки на время выполнения Delphi, вероятно, указывают на то, что EXE был фактически построен из Delphi, а не для инструментальной цепочки C вообще.
Если символы не были удалены из файла .EXE, вы можете найти некоторые подсказки, из которых присутствуют внутренние символы. Например, ссылка на что-то вроде _sjlj_init
, вероятно, указывает на то, что MinGW GCC 3.x, настроенный для обработки исключений setjmp/longjmp, был задействован в какой-то момент.
Что заставляет вас нуждаться в этой информации? – ojblass
Сначала, задаваясь вопросом, какая версия VS использовалась для создания некоторых из двоичных файлов, которые мы имеем здесь. (Я думал о перестройке их с более новой версией VS для почти бесплатного повышения производительности.) Я нашел того, кто знает ответ для этих конкретных двоичных файлов, но мне любопытно, можно ли вообще это сделать. – kquinn
Разве это не ответ в этом случае, просто чтобы перестроить с помощью новейшего компилятора в любом случае? Либо вы перекомпилируете, используя один и тот же компилятор, не внося никаких изменений, или вы в конечном итоге используете новый компилятор, предоставляя вам преимущества, о которых вы упоминали. – jalf