You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用COM DLL出现80040154异常但VB正常,求解决方案

解决C#调用COM接口时Fruit类报80040154(类未注册)异常的方案

核心问题分析

同属Library COM库的Car类能正常实例化,说明库本身已完成注册,问题出在Fruit类的注册匹配、项目配置或Interop元信息上。以下是针对性解决办法:

  • 检查COM组件与C#项目的位数匹配
    打开注册表编辑器(运行regedit),搜索Library.Fruit的CLSID,查看其注册项位于HKEY_CLASSES_ROOT\CLSID\{你的CLSID}下的InprocServer32路径,确认组件是32位还是64位。
    右键C#项目→属性→生成→平台目标,将其修改为与COM组件一致的位数(如x86或x64),同时同步修改解决方案平台的位数设置,避免编译冲突。

  • 重新生成Interop程序集
    删除项目中已有的Interop.Library引用,重新通过“添加引用→COM→选择目标Library”添加;或使用tlbimp工具手动生成:

    tlbimp.exe Library.dll /out:Interop.Library.dll
    

    将生成的Interop程序集添加到项目引用,确保Fruit类的元信息被正确导入。

  • 以管理员权限运行开发环境
    部分COM类的注册表项需要管理员权限才能读取,尝试以管理员身份启动Visual Studio,再编译运行项目,验证是否因权限不足导致无法读取Fruit类的注册信息。

  • 直接通过CLSID实例化Fruit类
    若上述方法无效,可尝试跳过Interop的类名映射,直接用CLSID实例化:

    // 替换为Fruit类实际的CLSID
    Guid fruitClsid = new Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
    Fruit a = (Fruit)Activator.CreateInstance(Type.GetTypeFromCLSID(fruitClsid));
    

内容的提问来源于stack exchange,提问作者Lemonbonbon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:53:12