The MS linker links only those member objects from static libraries that are needed to resolve dependencies. Unused member objects from static libraries are optimized away. Therefore if you have a duplicate symbol in a static library member object, but the member object is not needed, no error will arise. See also: http://msdn.microsoft.com/en-us/library/72zdcz6f.aspx
It seems like the MS linker also supports some kind of weak symbols: http://support.microsoft.com/kb/148652/EN-US http://nikoniko-programming.blogspot.ch/2010/09/aliasing-symbol-names-during-link-time.html
But I can't find this in the MSDN.