Com 尽管声明保持相同,但没有二进制兼容性
我一直在尝试生成具有二进制兼容性的COM DLL的新版本。我不明白为什么我会收到这样的信息:Com 尽管声明保持相同,但没有二进制兼容性,com,vb6,binary-compatibility,Com,Vb6,Binary Compatibility,我一直在尝试生成具有二进制兼容性的COM DLL的新版本。我不明白为什么我会收到这样的信息: 'init' in the 'Logger' class module has arguments and/or a return type that is incompatible with a similar declaration in the version-compatible component. Original definition: Function init(aLOGDIR As
'init' in the 'Logger' class module has arguments and/or a return type that is incompatible with a similar declaration in the version-compatible component.
Original definition:
Function init(aLOGDIR As String, Optional aListBox As Object, Optional aMAXLISTBOXLINES As Integer) As Boolean
Current definition:
Function init(aLOGDIR As String, Optional aListBox As Object, Optional aMAXLISTBOXLINES As Integer) As Boolean
正如您所看到的,我没有更改init
以下是我的步骤:
- 没有兼容性的第一代
- 在项目属性中设置二进制兼容性(引用以前生成的dll并重命名或不重命名)
- 第二代
- 出现警告
这是因为参数是
对象
?谢谢您的帮助。 在我的经验中,当试图让VB6与COM或C++一起工作时,必须注意数据类型的差异。我猜这可能是你的问题。如果您已经熟悉这一点,我深表歉意:
aLOGDIR作为字符串
表示一个char**
;考虑更改为<代码> ByVal aLOGDIR作为字符串< /代码>,虽然我怀疑这与您的问题有关。
可选的aMAXLISTBOXLINES作为整数
表示短
,而不是int
。可能会出现某些填充问题,但只要将其更改为,就可以解决该问题
作为布尔值
表示系统上的短
而不是bool
。只使用可能更安全,只要我不认为这是因为参数是一个对象,不。我在谷歌上搜索了一下,发现有一个老错误,当您在参数中引用表单对象时,它会给出这个消息。可能是因为ListBox控件,您遇到了相同的错误。虽然你把它当作一个物体。无论如何,解决方法是忽略消息。也许你可以继续保持兼容性并测试所有东西,看看它是否有效?谢谢你的回复,事实上,这是一个我忘记告诉它的表单对象。我会试着做一个反馈。