另外由于C++ 语言的各种特性,比如虚拟函数、函数重载、继承、异常等,使得它背后的数据结构异常复杂这些数据结构往往在不同的编译器和链接器之间相互不能通用,使得C++ 程序的二进制兼容性成了一个很大的问题...VISUAL C++ 编译器做法稍有不同,它把这种类型的段叫做“ COMDAT”,这种“ COMDAT”段的属性字段(PE文件的段表结构里面的 IMAGE SECTION HEADER的Characteristics...对于上面这些问题,首先我们可以想到的是,如果要将两个不同编译器的编译结果链接到一起,那么,首先链接器必须支持这两个编译器产生的目标文件的格式。...、编译器、链接器、操作系统等都会影响ABI
影响ABI的因素非常多,硬件、编程语言、编译器、链接器、操作系统等都会影响ABI我们可以从C语言的角度来看一个编程语言是如何影响ABI的。...以上的情况对于系统中已经存在的静态库或动态库须要被多个应用程序使用的情况也几乎相同,或者一个程序由多个公司或多个部门起开发,也有类似的问题。