纯C .dll各种编译器的编译结果是二进制兼容的吗

dll是windows专用的,只要文件遵守了Portable Executable格式就可以被windows正确识别并执行,不论是哪个编译器做的,哪怕是用二进制编辑器从零手写的。当然包含的机器码必须是同一架构的。在linux和mac上只要遵守elf和Mach-O格式就可以。dll中的导出表仅包含地址,用C语言表示就是一个函数指针的值。其它程序代码如果想调用函数必须还要知道参数和返回值类型以及调用规约,这部分信息就是头文件中的函数定义。如果参数或调用规约不匹配,程序很可能会crash。


    推荐阅读