确定二进制兼容性被破坏的原因

时间:2013-04-02 18:19:41

标签: vb6 dll binary-compatibility

当我尝试重建我的一个VB6 DLL时,我收到一个警告:

  

“二进制兼容性DLL或EXE包含参数类型或   无法找到其定义的返回类型“

我必须在选定的DLL中发布一些更改(方法内部的简单更改 - 根据this不会破坏兼容性)

我遵循的普遍接受的方法是将旧DLL保存在单独的共享目录中,并在创建新DLL时,将二进制兼容性设置为旧的DLL集进行编译。这样做是为了在我注册新DLL时不更改GUID。这些GUID在其他DLL中用作引用,我在发布过程中没有受到干扰。

我很确定我没有添加任何内容来破坏二进制兼容性规则(签名,公共方法,变量等没有变化)为什么会出现此错误?

我不是在检查一些基本的东西吗?从早上起我的头。非常感谢任何帮助。

编辑:如果我的签名发生了变化,有没有一种方法可以在不比较代码的情况下知道?

1 个答案:

答案 0 :(得分:2)

获取旧的DLL并为其添加compat_前缀。

基本上将您的MyAppDataAccess.dll文件重命名为compat_MyAppDataAccess.dll

现在转到ActiveX DLL的属性,并将项目设置为与新compat_MyAppDataAccess.dll具有二进制兼容性,如下所示。

现在只需构建您的DLL并进行部署即可。

它应该工作。实际上,如果您的更改导致二进制兼容性被破坏,那么您将收到一条警告,说明这一点。

enter image description here