Một nguồn gợi ý để phân biệt giữa các phiên bản VC là thư viện thời gian chạy C cụ thể được liên kết. Vì trường hợp mặc định là (ít nhất là trong các phiên bản hiện đại) để liên kết đến DLL, điều này khá dễ thực hiện. Tiện ích Dependency Walker gần như không thể thiếu để xác minh rằng bạn biết những gì DLL đang thực sự được nạp, và nó sẽ cho bạn biết thời gian chạy DLL C đang được sử dụng. Mặc dù phụ thuộc Walker được bao gồm trong Microsoft Platform SDK, nó đã được mở rộng độc lập và trang web tôi liên kết là nhà phát triển hiện tại của nó.
VC6 và MinGW đều liên kết với MSVCRT.DLL theo mặc định, vì vậy điều này sẽ không phân biệt được giữa chúng. Với một số nỗ lực, MinGW có thể được thực hiện để liên kết đến các phiên bản C thời gian chạy sau này, vì vậy bạn sẽ cần phải loại trừ độc lập ra MinGW.
Runtime VC Version
---------- -------------
MSVCRT.DLL VC6
MSCVR80.DLL VC8 (VS 2005)
MSCVR90.DLL VC9 (VS 2008)
Dll thời gian chạy khác cũng sẽ là đầu mối tốt, ví dụ: các tham chiếu đến thời gian chạy của Delphi có thể chỉ ra rằng EXE thực sự được xây dựng từ Delphi và không phải là một chuỗi công cụ C.
Nếu các biểu tượng chưa bị tước khỏi tệp .EXE, thì bạn có thể tìm thấy một số manh mối mà từ đó biểu tượng bên trong có mặt. Ví dụ, một tham chiếu đến một cái gì đó như _sjlj_init
có thể chỉ ra rằng một MinGW GCC 3.x cấu hình cho xử lý ngoại lệ setjmp/longjmp đã được tham gia tại một số điểm.
Điều gì khiến bạn cần thông tin này? – ojblass
Đầu tiên, tự hỏi phiên bản nào của VS được sử dụng để xây dựng một số tệp nhị phân mà chúng tôi có ở đây. (Tôi đã nghĩ đến việc xây dựng lại chúng với một phiên bản mới hơn của VS để tăng hiệu suất gần như miễn phí.) Tôi đã tìm thấy một người biết câu trả lời cho những tập tin nhị phân đặc biệt này, nhưng tôi tò mò muốn biết liệu nó có thể được thực hiện nói chung hay không. – kquinn
Không phải là câu trả lời trong trường hợp đó chỉ để xây dựng lại bằng cách sử dụng trình biên dịch mới nhất trong mọi trường hợp? Hoặc bạn biên dịch lại bằng cách sử dụng trình biên dịch tương tự, không thay đổi, hoặc bạn kết thúc bằng cách sử dụng một trình biên dịch mới hơn, cho bạn những lợi thế mà bạn đã đề cập. – jalf