我有一个导出C++类的MFC扩展DLL,我需要修改类方法的行为.这些更改不会影响类的方法签名.
我不想重新编译使用此库的先前发布版本的"lib"文件的模块.
如果更改修改了函数的入口点地址会发生什么?
例如,构造函数的地址已更改:
Export Ordinal Function Hint Entry Point
[+ ] 3 (0x0003) 2 (0x0002) ??0CLangManager@@QAE@XZ 0x00009CB0 (OLD DLL)
[+ ] 3 (0x0003) 2 (0x0002) ??0CLangManager@@QAE@XZ 0x00009760 (NEW DLL)
Run Code Online (Sandbox Code Playgroud)
我应该重新编译使用该库的模块吗?
我测试了重新编译的库 - 使用新的入口点 - 使用已发布的可执行文件,一切正常.我不确定这种情况是否隐藏了一些副作用.
什么时候需要重新编译链接到DLL的可执行文件?
什么时候二进制兼容性被破坏了?