Note that there are some explanatory texts on larger screens.

plurals
  1. POdebugging COM free registration (c++)
    primarykey
    data
    text
    <p>I've built a COM client application that uses two COM server dlls; I want this application to run without COM registration - ie: winsxs / .manifests</p> <p>I get a (...almost expected...) "Class not registered" message when I try to create an instance of my COM object from my client application.</p> <p>I've already succeeded that kind of configuration before but I cannot figure out why this one fail.</p> <hr> <p>here are a few more details:</p> <ul> <li>the modules I have: <ul> <li>a MFC client that depends on 2 COM servers (dll1.dll and dll2.dll)</li> <li>dll1.dll COM server depends on dll2.dll</li> <li>dll2.dll has no COM dependency</li> </ul></li> </ul> <p>the COM objects I have:</p> <ul> <li>in dll1.dll (.idl language)</li> </ul> <p>-</p> <pre><code>[ object, uuid(262D00FB-3B9F-4A76-98FC-3051FDCAF0A6), dual, nonextensible, helpstring("IDialogManager Interface"), pointer_default(unique) ] interface IDialogManager : IDispatch{ }; [ uuid(58562535-BCA5-4D04-BB92-78F90EDA201E), //... ] dispinterface _IDialogManagerEvents { }; [ uuid(D599D3F0-A4D1-44A7-87A9-16032CC613CA), //... ] coclass DialogManager { [default] interface IDialogManager; [default, source] dispinterface _IDialogManagerEvents; }; </code></pre> <p>-</p> <ul> <li>in dll2.dll</li> </ul> <p>-</p> <pre><code>[ 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; }; </code></pre> <p>-</p> <ul> <li>the client call</li> </ul> <p>-</p> <pre><code>IDialogManagerPtr dialogManager; dialogManager.CreateInstance(CLSID_DialogManager); // &lt;&lt;&lt; returns "Class not registered" </code></pre> <p>-</p> <ul> <li>the client.exe.2.manifest</li> </ul> <p>-</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt; &lt;assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"&gt; &lt;assemblyIdentity name="client" version="1.0.0.0" type="win32" processorArchitecture="x86"/&gt; &lt;file name="dll2.dll"&gt; &lt;comClass clsid="{707CB6C8-311E-45EC-9DCB-50477F588BAF}" threadingModel="apartment"&gt; &lt;/comClass&gt; &lt;comClass clsid="{CAC2D0BF-AD5B-4CC8-A04D-53AB23A0CDF4}" threadingModel="apartment"&gt; &lt;/comClass&gt; &lt;/file&gt; &lt;file name="dll1.dll"&gt; &lt;comClass clsid="{D599D3F0-A4D1-44A7-87A9-16032CC613CA}" threadingModel="apartment"&gt; &lt;/comClass&gt; &lt;/file&gt; &lt;/assembly&gt; </code></pre> <p>-</p> <hr> <p>I have no error during sxs activation context generation: - no error in windows log (should means that my manifest syntax is correct) - no error detected by sxstrace (the log ends with "INFO: Activation Context generation succeeded." message and contains no error or sucpicious message; moreover, I see that my manifest is loaded correctly)</p> <p>Any idea?</p> <p>is there a way to debug sxs deeper that with sxstrace? getting the list of actually registered com or clr classes for instance???</p> <p>Thank you by advance</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload