尽管声明一致,为何缺乏二进制兼容性?

2026-05-06 13:091阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计388个文字,预计阅读时间需要2分钟。

尽管声明一致,为何缺乏二进制兼容性?

我持续尝试生成具有兼容性且支持多种版本的COM和DLL新版本。不清楚为何收到以下信息:在‘Logger’类模块中,‘init’方法存在参数或返回类型,这与版本中相似声明不兼容。

我坚持尝试生成具有二进制兼容性的新版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 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,你可以看到……

这是我的步骤:

>第一代没有兼容性
>在Project属性中设置二进制兼容性(引用以前生成的dll,无论是否重命名)
>第二代
>发生警告.

这是因为参数是一个对象吗?谢谢你的帮助.

根据我的经验,当试图让VB6使用COM或C时,必须注意数据类型的差异.我猜这可能是你的问题.如果你已经熟悉这个,我道歉:

aLOGDIR As String表示char **;考虑更改为ByVal aLOGDIR As String,但我怀疑这与您的问题有关.

可选的aMAXLISTBOXLINES As Integer意味着short而不是int.可能会出现某些填充问题,但只需将其更改为“长”可能就足够了并解决问题.

尽管声明一致,为何缺乏二进制兼容性?

因为布尔意味着系统上的短而不是布尔.使用As Long可能更安全.

本文共计388个文字,预计阅读时间需要2分钟。

尽管声明一致,为何缺乏二进制兼容性?

我持续尝试生成具有兼容性且支持多种版本的COM和DLL新版本。不清楚为何收到以下信息:在‘Logger’类模块中,‘init’方法存在参数或返回类型,这与版本中相似声明不兼容。

我坚持尝试生成具有二进制兼容性的新版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 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,你可以看到……

这是我的步骤:

>第一代没有兼容性
>在Project属性中设置二进制兼容性(引用以前生成的dll,无论是否重命名)
>第二代
>发生警告.

这是因为参数是一个对象吗?谢谢你的帮助.

根据我的经验,当试图让VB6使用COM或C时,必须注意数据类型的差异.我猜这可能是你的问题.如果你已经熟悉这个,我道歉:

aLOGDIR As String表示char **;考虑更改为ByVal aLOGDIR As String,但我怀疑这与您的问题有关.

可选的aMAXLISTBOXLINES As Integer意味着short而不是int.可能会出现某些填充问题,但只需将其更改为“长”可能就足够了并解决问题.

尽管声明一致,为何缺乏二进制兼容性?

因为布尔意味着系统上的短而不是布尔.使用As Long可能更安全.