我一直在尝试生成具有二进制兼容性的新版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
吗?谢谢你的帮助。
答案 0 :(得分:1)
根据我的经验,当试图让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
可能更安全。