I created a COM client application that uses two COM server DLLs; I want this application to start without registering COM - i.e.: winsxs / .manifests
I get (... almost expected ...) a "Class unregistered" message when I try to instantiate my COM object from my client application.
I already had this configuration, but I canβt understand why this fails.
Here are some more details:
- modules I have:
- MFC client that depends on two COM servers (dll1.dll and dll2.dll)
- dll1.dll COM server depends on dll2.dll
- dll2.dll has no dependency on COM
COM objects that I have:
- in dll1.dll (.idl language)
-
[ object, uuid(262D00FB-3B9F-4A76-98FC-3051FDCAF0A6), dual, nonextensible, helpstring("IDialogManager Interface"), pointer_default(unique) ] interface IDialogManager : IDispatch{ }; [ uuid(58562535-BCA5-4D04-BB92-78F90EDA201E),
-
-
[ object, uuid(2A183A2E-A620-4E00-B657-C9D2E59201D4), nonextensible, helpstring("ICadWizardsManager Interface"), pointer_default(unique) ] interface ICadWizardsManager : IDispatch{ }; [ object, uuid(FE97F3FB-8930-43BC-947D-64C90F45A071), nonextensible, helpstring("ICadWizard Interface"), pointer_default(unique) ] interface ICadWizard : IDispatch{ }; [ uuid(5365D4E6-ADFB-4429-9DEA-C44CC94AA3EF), ] dispinterface _ICadWizardEvents { }; [ uuid(CAC2D0BF-AD5B-4CC8-A04D-53AB23A0CDF4), ] coclass CadWizard { [default] interface ICadWizard; [default, source] dispinterface _ICadWizardEvents; }; [ uuid(3164FAC4-6F5F-4E4D-9B09-DC4115850D78), ] dispinterface _ICadWizardsManagerEvents { }; [ uuid(707CB6C8-311E-45EC-9DCB-50477F588BAF), ] coclass CadWizardsManager { [default] interface ICadWizardsManager; [default, source] dispinterface _ICadWizardsManagerEvents; };
-
-
IDialogManagerPtr dialogManager; dialogManager.CreateInstance(CLSID_DialogManager);
-
-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="client" version="1.0.0.0" type="win32" processorArchitecture="x86"/> <file name="dll2.dll"> <comClass clsid="{707CB6C8-311E-45EC-9DCB-50477F588BAF}" threadingModel="apartment"> </comClass> <comClass clsid="{CAC2D0BF-AD5B-4CC8-A04D-53AB23A0CDF4}" threadingModel="apartment"> </comClass> </file> <file name="dll1.dll"> <comClass clsid="{D599D3F0-A4D1-44A7-87A9-16032CC613CA}" threadingModel="apartment"> </comClass> </file> </assembly>
-
I have no error when generating the sxs context: - there is no error in the Windows log (should mean that my manifest syntax is correct) - the error was detected by sxstrace (the log ends with the message "INFO: Activation Context generation successed." And does not contain messages about errors or messages, moreover, I see that my manifest is loaded correctly)
Any idea?
Is there a way to debug sxs deeper than with sxstrace? getting a list of actually registered com or clr classes, for example.
Thank you in advance