430 Class does not support Automation with custom ActiveX DLL
Posted on 2003-10-29
Having trouble with an ActiveX DLL I built. I've had the DLL and the client application working without incident until just recently. The two projects work fine in the development environment and on my machine. I can load them under a Project Group or independentally without incident. As soon as I distribute them to another workstation in the office, that workstation gets 430 and is completely fried.
I had binary compatibility set on the DLL but decided I needed to make a change to the interface - basically I wanted to expose another method. I changed the code and recompiled the DLL as a new file (the original My.DLL is now being compiled as My2.DLL). The public classes kept the same names within the project and the project name stayed the same but the name of the DLL was changed. I went back and set binary compatibility to the new DLL and compiled again.
At this point I'm losing my mind. I have tried editing the registry on one workstation to remove references to the older versions of the DLL. I have recompiled multiple times. I started a brandnew project and imported the classes and forms from the original with a new project name, new DLL name and new names for my public classes. I tried building a new test client application and over and over all I see is
RTE 430 Class does not support Automation....
Occasionally I'm seeing Class Factory cannot supply requested class (or something like this). MSDN had no references to that, by the way.
Is there a way to determine exactly what the interface of my DLL consists of? Like which methods are exposed and what parameters they take (besides using Intellisense)? I know next to nothing about IUnknown and QueryInterface - I leave that to my C++ friends - but could the solution be hidden in that interface?
The breakpoint happens when I try to Set the local object, as in:
Set JM = New My2.Dll.PublicClass
I was able to see the breakpoint by running a test app on the dev environment from a workstation that has never compiled the DLL, and thus has a 'clean' Registry. I referenced the complied DLL in the WinSys folder in this instance.
Anyway, I'm stuck. Any thoughts are appreciated....