就你不知道:二进制兼容性

来源:互联网 发布:翻译软件for mac 编辑:程序博客网 时间:2024/05/02 08:54

简单的理解,就是一个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的新修改的源码 int __cdecl add(int,int,int c=0);
DLL的入口(假设它重新编译链接)?add@@YAHHHH@Z
EXE的源码int x = add(1,2);  

EXE要寻找的入口(假设它未重新编译链接)?add@@YAHHH@Z

此时:DLL提供的入口和EXE想进入的入口不一致了。

0 0
原创粉丝点击