VB6升级后的E_NOINTERFACE

发布于 2024-07-07 06:32:36 字数 410 浏览 8 评论 0原文

升级基于 VB 6 的应用程序并公开 COM 接口后, 针对先前版本构建的 COM 客户端(在 .NET 中)会收到 E_NOINTERFACE 错误。

错误消息(翻译),

无法将 AProduct.AClass 类型的 COM 对象转换为 AProduct._AClass 类型的接口 ...

这里出了什么问题?

E_NOINTERFACE 错误的原因是什么?

认为接口一旦发布到 COM 就无法更改; 应该发布一个新的接口(具有唯一的 UUID),它可以继承旧的接口,因此我推断该接口可能已错误地更新(扩展)。

After upgrading a VB 6 based application exposing a COM interface,
COM Clients (in .NET) built against the previous version receive E_NOINTERFACE errors.

The error message (translated),

Cannot convert COM-object of type AProduct.AClass to interface of type AProduct._AClass ...

What went wrong here?

What is the cause of the E_NOINTERFACE error?

I thought that once an interface was published to COM it cannot be changed; a new interface (with unique UUID) should be published which can inherit the old one, thus i reasoned that the interface might have been updated (extended) incorrectly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不知所踪 2024-07-14 06:32:36

您的 VB 6.0 项目中的版本兼容性设置是什么? (请参阅项目属性的“组件”选项卡)

如果不是“二进制兼容性”,则在编译 DLL 时,组件公开的接口和事件的 GUID 可能已更改。

查看这些资源以了解详细信息

如何使用项目和二进制兼容性

在 Visual Basic 6.0 中设置 COM 组件项目

What is the Version Compatibility setting in your VB 6.0 project? (See the Component tab of your project properties)

If it's not Binary Compatibility then the GUIDs for the interfaces and events exposed by your component may have been changed when you compiled the DLL.

Check out these resources for more information

How To Use Project and Binary Compatibility

Setting up a COM component project in Visual Basic 6.0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文