C# 来自HRESULT的异常:0x80004002(E_NOINTERFACE)

C# 来自HRESULT的异常:0x80004002(E_NOINTERFACE),c#,exception,com,vb6,C#,Exception,Com,Vb6,我负责维护一个C#应用程序(VS2005)。这个C#应用程序调用一个dll(“mydll.dll”)。我需要对有问题的dll进行一些更改 我有一个用VisualBasic6.0编写的文件“mydll.vbp”。我在Visual Studio中进行了更改,然后从Visual Basic界面“生成”了“mydll” 问题是,现在,每次我尝试在C#中的debbuger模式下从“mydll.dll”实例化一个类时,我都会遇到以下“InvalidCastException” 无法将mydll.ClassF

我负责维护一个C#应用程序(VS2005)。这个C#应用程序调用一个dll(“mydll.dll”)。我需要对有问题的dll进行一些更改

我有一个用VisualBasic6.0编写的文件“mydll.vbp”。我在Visual Studio中进行了更改,然后从Visual Basic界面“生成”了“mydll”

问题是,现在,每次我尝试在C#中的debbuger模式下从“mydll.dll”实例化一个类时,我都会遇到以下“InvalidCastException”

无法将mydll.ClassFrommydll类型的COM对象强制转换为接口类型mydll。\u ClassFrommydll'。此操作失败,因为对IID为“{384FB79F-B636-4655-9441-8222692AB8AE}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT的异常:0x80004002(E_NOINTERFACE))

我试图重新引用有问题的dll。。。但这并没有改变任何事情

你知道这是怎么回事吗

非常感谢所有能够提供帮助的yopu。我已经被这个问题困扰了好几天了。开始感到压力

从类中删除所有GUID和“ComVisible”属性,
然后将AssemblyInfo文件中的[assembly:ComVisible(true)]属性切换为“true”。

标记主类[StatThread]
您的问题将得到解决

我使用IBM Dll遇到了这个问题

[STAThread]
static void Main(string[] args)
{
}

修复了所有COM接口都可用且异常已清除的问题

我也有同样的问题,这似乎无法解决任何问题,也没有任何意义……对于任何其他偶然发现这一点的人,在.@L.Trabacchin中有一个很好的解释,您可以在中找到“为什么”的答案。