我有一个导出 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)
我是否应该重新编译使用该库的模块?
我使用发布的可执行文件测试了重新编译的库 - 使用新的入口点,一切正常。我不确定这种情况是否隐藏了一些副作用。
什么时候需要重新编译链接到 DLL 的可执行文件?
二进制兼容性何时被破坏?