gpt4 book ai didi

c# - C# 中 COM 的松散耦合或如何避免 COMException 0x80040154

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:31 27 4
gpt4 key购买 nike

我有一个正在开发的 .Net 2 C# 应用程序,它使用 VB 6 生成的 COM DLL。 VB DLL 经常更新任何我的应用程序崩溃与 System.Runtime.InteropServices.COMException (0x80040154)。我使用的 COM DLL 部分没有改变,但版本(和 CLSID)会改变。

引用的“特定版本”选项为 false。 WrapperTool 是 tlbimp。

如何告诉我的应用程序不要担心 DLL 中的更改?有什么方法可以只检查我正在使用的功能吗?

最佳答案

这是最常见的 COM 错误之一,“类未注册”。它从 VB6 开始,它有一个控制二进制兼容性的选项。忘记具体长啥样了,时间太久了。如果您不控制它,VB6 将创建一个具有不同 CLSID 值的新 COM 服务器。这需要使用 Regsvr32.exe 重新注册 DLL。并使用 Tlbimp.exe 重新生成互操作库。您可能错过了后一步。

请注意,使用不同的 CLSID 值是 COM 的硬性要求,它必须在公共(public)接口(interface)更改时完成。但不是只有实现发生变化。

关于c# - C# 中 COM 的松散耦合或如何避免 COMException 0x80040154,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2451261/

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