Исключение из HRESULT: 0x80004002 (E_NOINTERFACE) - PullRequest
7 голосов
/ 20 марта 2012

Я отвечаю за обслуживание приложения на C # (VS 2005).Это C # приложения вызывает DLL ("mydll.dll").Мне нужно было внести несколько изменений в DLL.

У меня есть файл "mydll.vbp", который был написан в Visual Basic 6.0.Я сделал свои изменения в Visual Studio и затем "сделал" mydll "" из интерфейса Visual Basic.

Проблема в том, что теперь, каждый раз, когда я пытаюсь создать экземпляр класса из "mydll.dll" в режиме отладчика в C #, у меня появляется следующее "InvalidCastException"

Невозможно привести объект COM типа mydll.ClassFrommydll к типу интерфейса mydll._ClassFrommydll '.Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{384FB79F-B636-4655-9441-8222692AB8AE}' завершился ошибкой из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)),

Я пытался повторно ссылаться на DLL, о которой идет речь ... но это ничего не меняет.

Есть идеи о том, откуда это может быть?

Большое спасибо всем йопу, которые могут помочь.Застрял с этой проблемой в течение нескольких дней.Начни чувствовать давление ...

Ответы [ 3 ]

4 голосов
/ 08 октября 2013

отметьте основной класс [STAThread], и ваша проблема будет решена

3 голосов
/ 11 декабря 2018

Я столкнулся с этой проблемой, используя IBM Dll.

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

Исправлена ​​проблема со всеми используемыми интерфейсами COM и исключением

0 голосов
/ 20 марта 2012

Удалить все GUID и атрибуты "ComVisible" из класса, затем переключите атрибут [assembly: ComVisible (true)] в файле AssemblyInfo-File на значение true.

...