我一直在尝试生成具有二进制兼容性的新版本的 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
如你看到的...这是我的步骤:
这是因为参数是
Object
?谢谢你的帮助。
最佳答案
根据我的经验,当试图让 VB6 与 COM 或 C++ 一起工作时,必须特别注意数据类型的差异。我猜这可能是你的问题。如果您已经熟悉这一点,我深表歉意:aLOGDIR As String
意味着 char**
;考虑改成 ByVal aLOGDIR As String
,尽管我怀疑这与您的问题有关。Optional aMAXLISTBOXLINES As Integer
意味着 short
而不是 int
.可能会出现某些填充问题,只需将其更改为 As Long
可能就足够了并解决了问题。As Boolean
意味着 short
而不是 bool
系统上。使用 As Long
可能更安全.
关于com - 尽管声明保持相同,但没有二进制兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30374580/