
Yes. VC10's linker deterministically detects IDL mismatch and emits hard errors, naming the offending object files. (This machinery, #pragma detect_mismatch, is available for anyone to use. It will also detect when object files using the C++ Standard Library and compiled with different major versions of VC are mixed together, as long as both are VC10+; unfortunately we can't detect mixing when VC9 or earlier is involved.)
Cool, I'll investigate adding support for that to our auto-linking header.
Note that there are 5 possible modes:
Release SCL=0 (now IDL=0, default in VC10) Release SCL=1 (now IDL=1, default in VC8/9)
Debug HID=0 SCL=0 (now IDL=0) Debug HID=0 SCL=1 (now IDL=1) Debug HID=1 SCL=1 (now IDL=2, default in VC8/9/10)
(The HID and SCL macros are still supported for backwards compatibility, but they are immediately mapped to IDL, which is what the rest of our headers now refer to.)
Is HID=1 SCL=0 ever possible in past versions? Thanks, John.