【问题标题】:How to replace a COM object?如何替换 COM 对象?
【发布时间】:2012-08-13 11:34:31
【问题描述】:

我需要开发一个COM 对象DLL 可以替换旧对象。我需要这个,因为我不想开发使用旧 COM DLL 的应用程序。我将创建一个具有相同属性和方法的新 COM 对象。我看到的主要困难是UUID 发布。 我不明白其中一些的重要性以及它们在哪里使用,哪些我必须复制,哪些可能会有所不同?我发现调用 COM 对象的程序(在我的例子中是 Navision)使用描述库和类型库的 UUID。如果有人可以分享此类任务的经验,那就太好了。

【问题讨论】:

  • 如果您使用的是 NAV 2009 R2,您可能需要考虑将其设置为 .NET 插件而不是 COM 插件,因为在 NAV 中对 .NET 插件有更好的支持前进。
  • 所有这些 UUID 接口 ID 都是同一个类,还是 COM 库包含多个类?如果是后者,它们之间的关系如何?例如。如果object1可以创建object2,它可能会使用内部方法而不是使用发布的IID。

标签: c++ visual-studio-2010 navision dynamics-nav


【解决方案1】:

guid 非常很重要,COM 用它来查找接口、类和类型库。人类不太擅长挑选有保证的唯一名称,而不是名称。

它们必须完全匹配,否则客户端代码将无法正常工作。您还必须确保接口具有完全相同的方法、完全相同的签名和完全相同的顺序。虽然 guid 错误往往会产生合理的错误消息,但接口错误几乎总是会导致无法诊断的运行时行为,只有在幸运时才会出现访问冲突。

【讨论】:

  • 所有 GUID 都同等重要吗?对于 COM 对象的重新设计版本,所有 GUID 是否应该与第一个版本中的匹配?
  • 如果这应该是一个插入式替代品,那么让它们中的一个有所不同是没有意义的。
猜你喜欢
  • 1970-01-01
  • 2016-04-23
  • 2021-01-17
  • 2010-12-07
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
相关资源
最近更新 更多