By my understanding compilers like mingw, clang, mvs c++ simply take source code written in C++ and try to generate senseful object code and maybe create an executeable that may or may not follow the developer's intentions.
However I noticed that for example OpenCV may cause linkage errors, if OpenCV and the code using it were compiled by different compilers. Why is that? What does using different compilers accomplish?