最近一个项目,碰到一个服务端调用客户端的com组件,一直调不起来。看了一下代码,里面的机制是利用com的连接点,客户端实现连接点,服务端调用。
但是服务端实例化,即advise的时候,内部queryinterface的时候,一直返回E_NOINTERFACE(No such interface supported),advise于是就返回CONNECT_E_CANNOTCONNECT(connection attempt failed)。
经过和之前正常运行的程序比对发现,是没有注册服务端的代理导致的,所以注册上代理程序即可正常运行。
PS:com组件一般都会有代理程序,所以今后遇到com组件的问题,要注意查看代理程序是否没有注册上。(因为com真心好难调试呀!!!!)