Question

Il est sur la fenêtre composant COM.

  • Server.exe: un 32bit hors processus serveur COM
  • CLSID_Application: Le GUID d'un objet COM dans Server.exe
  • Client.exe:. Une application client 64 bits qui utilisent Server.exe d'une manière sans registre

Comme nous le savons, un exe ne peut pas être utilisé comme composant COM sans registre, pour imiter un tel comportement, je commence le processus moi-même Server.exe en fournissant le chemin exact:

  • CreateProcess ( "Server.exe")
  • IClassFactory * pFactory = CoGetClassObject (CLSID_Application)
  • pFactory-> CreateInstance (ppAppObject);

Il fonctionne si je le registred Server.tlb, mais après désinscription Server.tlb, il vient d'échouer à créer le ppAppObject, même si j'intégrer manifeste à la fois Server.exe et Client.exe:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="Server.tlb">
  <typelib tlbid="{DAC4A4C9-F84C-4F05-A7DC-E152869499F5}" version="1.0" helpdir=""></typelib>
</file>
<comInterfaceExternalProxyStub name="IApplication" iid="{D74208EA-71C2-471D-8681-9760B8ECE599}" tlbid="{DAC4A4C9-F84C-4F05-A7DC-E152869499F5}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
</assembly>

Avez-vous une idée à ce sujet?

Edit: Il se trouve que cela fonctionne vraiment si je précise tlbid pour les interfaces et intégrez le manifeste à la fois exe

Était-ce utile?

La solution

est l'élément <comInterfaceExternalProxyStub> suffisant? Ne pas vous avez besoin des éléments de <comClass> et <typelib> ainsi?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top