gpt4 book ai didi

com - 尽管声明保持相同,但没有二进制兼容性

转载 作者:行者123 更新时间:2023-12-04 14:09:47 25 4
gpt4 key购买 nike

我一直在尝试生成具有二进制兼容性的新版本的 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如你看到的...

这是我的步骤:
  • 第一代不兼容
  • 在项目属性中设置二进制兼容性(引用先前生成的 dll,重命名或不重命名)
  • 二代
  • 出现警告。

  • 这是因为参数是 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com