Unfortunately your example in GCC is not the same thing. If you do the exact same thing as you did in Visual Studio then you will get an error.
Static libraries work differently to object files though. As documented, external dependencies, which are function or variable names, are found by the linker searching through the list of libraries in the order of those on the command line then those then those added via the the /DEFAULTLIB linker option and then finally default libraries named in object files. What this doesn't explicitly mention is that once it has found a symbol, the linker will stop searching. This means that the linker will only see this as a problem if you use two symbols from two separate libraries and they are in objects that define the same symbols.
To put this simply, the linker not warning, or caring, is expected behaviour. I would also be surprised if you set up the exact same situation with GCC or LLVM/Clang and the linker complains.
Also, this is off topic for this tag. You would be better off asking this type of question on the VC General forum.