【发布时间】:2018-06-21 21:10:21
【问题描述】:
我有一个暴露类INewReport 的VB6 ActiveX DLL。我向这个类添加了一些新方法,并且能够重建它并保持二进制兼容性。
我有第二个 DLL,它公开了一个类 clsNewReport,它使用以下方法实现第一个类:
Implements RSInterfaces.INewReport
由于我向INewReport 添加了新方法,因此我还必须将这些新方法添加到clsNewReport。
但是,当我尝试编译第二个 DLL 时,我得到了二进制兼容性错误“...类在版本兼容的组件中实现了一个接口,但在当前项目中没有” .
我不确定这里发生了什么。既然我只是添加到类中,为什么我不能保持与第二个 DLL 的二进制兼容性?有没有办法解决这个问题?
【问题讨论】:
-
VB6 中二进制兼容性的一个怪癖是您可以添加方法(这是怪癖),但必须附加它们。如果您碰巧在签名中已经存在的任何方法之前添加了任何方法(意思是,没有将它们放在代码窗口的底部),您将破坏兼容性。这可能是问题所在?
-
@BobRodes:听起来不太对劲。你有任何链接支持吗?
-
看来我的记忆错了,对不起。您可以添加方法(这是怪癖),但不能删除或更改现有方法的签名。