Es geht um Window COM-Komponente.So verwenden Sie einen Out-of-Process-COM-Server ohne seine TLB-Datei
- Server.exe: ein 32-Bit-out-of-process COM Server
- CLSID_Application: Die GUID eines COM-Objekt in Server.exe
- Client.exe: eine 64-Bit-Anwendung, die Client verwenden Server.exe in einer registrierungsfreien Weise.
Wie wir wissen, kann eine exe nicht als registrierungsfreie COM-Komponente verwendet werden, ein solches Verhalten zu imitieren, beginne ich den Prozess Server.exe mich von den genauen Pfad bereitstellt:
- CreateProcess ("Server.exe")
- IClassFactory * pFactory = CoGetClassObject (CLSID_Application)
- pFactory-> CreateInstance (ppAppObject);
Es funktioniert, wenn ich die server.tlb registriert haben, aber nach austragen server.tlb, es nicht ganz den ppAppObject zu schaffen, auch wenn ich Manifest einbetten in beide Server.exe und 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>
Haben Sie eine Idee dazu?
Edit: Es stellt sich heraus, dass es wirklich funktioniert, wenn ich tlbid für Schnittstellen angeben, und betten das Manifest sowohl exe
Ich habe versucht, die nicht funktioniert. und konnte nur in einem -Tag verwendet werden, aber in meinem Fall ist die ausführbare Datei eine Exe, es wird nicht von der Registrierung kostenlose COM unterstützt –