6

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

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

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

我遵循的普遍接受的方法是将旧的 DLL 维护在一个单独的共享目录中,并在制作新的 DLL 时,将它们编译为设置为旧的 DLL 集的二进制兼容性。这样做是为了在我注册新的 DLL 时不更改 GUID。这些 GUID 用作其他 DLL 中的引用,我在发布期间没有干扰这些 DLL。

我很确定我没有添加任何东西来破坏二进制兼容性规则(签名、公共方法、变量等没有变化)为什么会发生这个错误?

我是不是因为不检查一些基本的东西而成为菜鸟?从早上开始就挠头。任何帮助深表感谢。

编辑:如果我的签名有任何更改,有没有一种方法可以在不比较代码的情况下知道?

4

1 回答 1

2

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

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

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

现在只需构建您的 DLL 并部署它。

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

在此处输入图像描述

于 2013-04-03T06:15:20.870 回答