简单的理解,就是一个exe文件需要用到其他dll文件,如果我们不重新编译链接exe,替换一个新的dll,而运行正常,则称为二进制兼容良好。
这种应用场景很多,例如,发布新的补丁程序,只给客户升级极少的dll文件,而多数的exe,dll都不用更新了。
不幸的是,不随愿的情况也很多。
场景一:
DLL的源码 int __cdecl add(int,int);
DLL的二进制程序入口 ?add@@YAHHH@Z
EXE的源码 int x = add(1,2);EXE要寻找的入口 ?add@@YAHHH@Z
此时:DLL和EXE配合良好
DLL的入口(假设它重新编译链接) ?add@@YAHHHH@Z
EXE的源码int x = add(1,2);
EXE要寻找的入口(假设它未重新编译链接)?add@@YAHHH@Z
此时:DLL提供的入口和EXE想进入的入口不一致了。