asp.net – COM异常 – TYPE_E_CANTLOADLIBRARY?

我在.Net Web应用程序中使用COM dll.这适用于多台不同的机器.

但是在一台特定的机器上,我收到以下错误:

无法将“CServer.CApplicationClass”类型的COM对象强制转换为接口类型“CServer.ICApplication”.此操作失败,因为对于具有IID'{CF0DFA28-046B-4C7D-8AA9-F4B7477D8CAE}的接口的COM组件的QueryInterface调用由于以下错误而失败:加载类型库/ DLL时出错. (来自HRESULT的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY)).

我使用regsvr32命令注册了dll.
我还为这个dll创建了一个COM应用程序.
通过注册表运行搜索
我可以在很多地方找到钥匙.
我也尝试取消注册dll并将计算机上的所有引用删除到此dll.然后重新添加dll并重新注册它.

我写了一个简单的Windows脚本文件来测试dll.这很好用.但是我的.net项目中存在问题,该项目在iis中运行.

谁能帮我这个?..

如果您需要更多信息,请发表评论.谢谢.

最佳答案 我有一个类似的问题,“TYPE_E_CANTLOADLIBRARY”消息.

背景:
我有一个使用Interop.ReferenceA.dll的项目.此文件是使用tlbimp ReferenceA.dll / out:Interop.ReferenceA.dll创建的.

解:
当我使用RegDllView查看ReferenceA.dll时,我注意到ReferenceA.dll有一个子类,它是错误消息中显示的IID.
我查看了子类的源代码,发现它与Interop.ReferenceB.dll有依赖关系.

事实证明,子类需要Interop.ReferenceB作为类型库才能工作.所以我跑了这个:

regasm /tlb:Interop.ReferenceB.tlb Interop.ReferenceB.dll(使用了32位版本的regasm.)

错误消失了.

点赞