C++ 是否有一个;纯粹的;IDispatch接口是否需要代理/存根DLL?
…对于进程外服务器,或者我可以在不注册代理/存根的情况下调用调度接口吗C++ 是否有一个;纯粹的;IDispatch接口是否需要代理/存根DLL?,c++,winapi,com,marshalling,idispatch,C++,Winapi,Com,Marshalling,Idispatch,…对于进程外服务器,或者我可以在不注册代理/存根的情况下调用调度接口吗 所讨论的接口级别非常高,因此性能不是问题,我可以让整个过程免费注册,这是一个很大的优点如果需要封送接口,您只需要一个代理/存根dll。这意味着,如果您的COM服务器正在运行,并且接口没有在单元之间传递,并且您不会从.Net或任何其他需要对其进行封送处理的情况调用它,那么您就不需要代理/存根dll。如果您限制了接口,我敢肯定您不需要提供自定义代理/存根dll自动兼容类型。在这种情况下,系统可以使用自动化封送处理程序,不需要任何
所讨论的接口级别非常高,因此性能不是问题,我可以让整个过程免费注册,这是一个很大的优点如果需要封送接口,您只需要一个代理/存根dll。这意味着,如果您的COM服务器正在运行,并且接口没有在单元之间传递,并且您不会从.Net或任何其他需要对其进行封送处理的情况调用它,那么您就不需要代理/存根dll。如果您限制了接口,我敢肯定您不需要提供自定义代理/存根dll自动兼容类型。在这种情况下,系统可以使用自动化封送处理程序,不需要任何其他帮助。我认为与自动化兼容的类型是可以适应
变体的类型,例如简单POD类型、BSTR
s等
我发现其中有一些关于自动化封送员的讨论,尽管它并不是专门针对您的问题。它至少列出了兼容的类型。它还提到,您需要在组件的注册中明确标识自动化封送拆收器,但根据我的经验,这不是必需的-您的里程可能会有所不同
最后,您可能还需要实现IProvideClassInfo;我通常使用ATL提供的实现。因此您希望使用标准封送拆收器为您自动创建代理/存根包装。问题是您如何标识这个coclass的IDispatch以进行包装,而不包含该coclass的注册表项?不,问题是我是否可以使用它。