0
votes

I have a case of a .Net project that calls a VB6.0 DLL. The VB6.0 DLL calls another DLL. This is working on my own machine which runs Windows 7 (64 bit). The problem comes when I try to run on our server which is a Windows XP (32 bit) Machine. The error occurs as soon as I instance the Com DLL. The message is below: GetKey Retrieving the COM class factory for component with CLSID {C619F1DB-80EF-4CE3-9E73-08866AD28D1C} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

I did make sure I manually registered both DLLs. Converting the Com object to .Net is not an option.

My question is how do I trace the problem. There is a CLSID number given but how do I trace this to find out what is the object causing the problem?

1
Well, which one provides {C619F1DB-80EF-4CE3-9E73-08866AD28D1C}? Did you install all of its dependencies? If you have no idea then use SysInternals' Process Monitor to diagnose. Look at the registry keys that are written then you run Regsvr32.exe. And look at the ones that the program is searching for. And looks for searches for a DLL that can't be found. - Hans Passant
Normally this happens the other way around when trying to instantiate a 32-bit DLL (VB6) from .net on a 64-bit system. You could check whether that CLSID is actually registered. - Deanna

1 Answers

-1
votes

Thanks to the responders. I found the answer finally it another thread of Stack Overflow.

In VS - project properties - in the Build tab - platform target =X86