佚名通过本文主要向大家介绍了
CoCreateInstance返回E_NOTIMPL等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: CoCreateInstance返回E_NOTIMPL
描述:
解决方案1:
描述:
在客户端使用CoCreateInstance创建一个进程外接口时,
如果该接口派生自IDispatch,就可以正常创建,
如果该接口派生自IUnknown,就返回E_NOTIMPL,调试后可以肯定在服务器侧已成功的创建了接口实例。不知道是不是和接口列集有关?
哪位大哥给解释一下?
解决方案1:
楼主的错误是因为使用了Service,即一个进程外组件,必须使用列集。但楼主使用了标准列集方式(组件没有实现IMarshal),却没有提供对应的代理/占位组件,因此只对那个接口错误,如果楼主换成声请IUnknown*接口的话,应该不会出错(不过就只能调用那3个函数)。
下面的帖子和楼主的问题是同样的,楼主可参考其中的步骤生成代理/占位组件并注册。
http://expert.csdn.net/Expert/topic/2604/2604535.xml?temp=.3787653
而至于为什么从IDispatch派生的可以没事,那是因为IDispatch的代理/占位组件已经实现编好了,存于ole32.dll中,因此即使楼主没有提供它的代理/占位组件依然可以成功调用。