10

I'm in charge of the maintenance of a C# application (VS 2005). This C# applications calls a dll ("mydll.dll"). I needed to make a few changes on the dll in question.

I have the file "mydll.vbp" that was written in Visual Basic 6.0. I made my changes in Visual Studio and, then, "made "mydll"" from the Visual Basic interface.

The problem is that, now, at each time I try to instance a class from "mydll.dll" in debbuger mode in C#, I have the following "InvalidCastException"

Unable to cast COM object of type mydll.ClassFrommydll to interface type mydll._ClassFrommydll'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{384FB79F-B636-4655-9441-8222692AB8AE}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

I tried to re-reference the dll in question ... but that does not change anything.

Any idea on what it could come from ?

Many many thanks to all of yopu who can help. Have been stuck with this problem for days now. Start to feel the pressure ...

JimmyPena
  • 8,694
  • 6
  • 43
  • 64
Michael
  • 111
  • 1
  • 2
  • 4
  • 1
    For anyone else who stumbles on this, there's a great explanation in [this answer](http://stackoverflow.com/a/16943296/210780). – ashes999 Apr 04 '17 at 16:48

2 Answers2

6

mark the main class [STAThread] and your problem will be solved

Saddam Mohsen
  • 195
  • 2
  • 13
  • 2
    @L.Trabacchin you can find the answer to "why" in [this answer](http://stackoverflow.com/a/16943296/210780). – ashes999 Apr 04 '17 at 16:50
4

I ran into this exact problem using the IBM Dll's.

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

Fixed the issue for me with all COM interfaces being usable and the exception cleared

Ashetynw
  • 198
  • 1
  • 12