使用不同的编译器-该怎么做?

时间:2019-06-01 06:48:38

标签: c++ visual-c++ compilation clang mingw

据我所知,诸如mingw,clang,mvs c ++之类的编译器仅采用用C ++编写的源代码,并尝试生成有意义的目标代码,并可能创建可能遵循或不遵循开发人员意图的可执行代码。

但是我注意到,例如,如果OpenCV和使用它的代码是由不同的编译器编译的,则OpenCV可能会导致链接错误。这是为什么?使用不同的编译器有什么作用?

2 个答案:

答案 0 :(得分:2)

  

那是为什么?使用不同的编译器有什么作用?

好吧,使用不同的编译器可能会使用不同(且不兼容)的ABI

通常,应对使用的库进行编译,使其与目标编译器(链接器)ABI兼容。

答案 1 :(得分:0)

  

如果OpenCV及其使用的代码是   由不同的编译器编译。为什么会这样?

不同的C ++编译器可能具有不同的名称修饰。结果,链接过程无法链接由不同编译器生成的名称。

  

使用不同的编译器有什么作用?

使用不同的编译器可以使开发人员找出有关代码可移植性的问题。