Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有一个;纯粹的;IDispatch接口是否需要代理/存根DLL?_C++_Winapi_Com_Marshalling_Idispatch - Fatal编程技术网

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的注册表项?不,问题是我是否可以使用它。