我正在尝试从 64 位应用程序创建一个 32 位 COM 对象。
我CLSCTX_LOCAL_SERVER
在CoCreateInstance
调用中使用,并在注册表项中添加了一个空DllSurrogate
键,AppId
以告诉 COM 在 DllHost 中托管服务器。我已经regsvr32 myproxy.dll
从提升的提示中调用以注册代理,没有错误。我在注册表中看到注册表ProxyStubClsid32
的 64 位部分中有我的接口的键。
我CoCreateInstance
这样称呼:
CComPtr<IMyObj> myobj;
HRESULT hr = myobj.CoCreateInstance(CLSID_MyObj, NULL, CLSCTX_LOCAL_SERVER);
这实际上适用于我的开发机器,我可以在 VS 中看到正在加载代理 DLL。但不是在我正在测试的机器上。所以是配置问题。
请注意,如果我请求CoCreateInstance
返回,它会告诉我该组件已正确注册。S_OK
IUnknown
如何让 COM 加载代理 DLL?