1. 在cpp 和.h 中都有定义新增方法 pushurl 
2. 在idl中文件已经定义pushurl方法 
[helpstring("method SetFaxResolution")] HRESULT SetFaxResolution([in] long nResolution);
[helpstring("method GetCallerID")] HRESULT GetCallerID([out]BSTR  *rCallerID);
[helpstring("method ASR")] HRESULT ASR([out] BSTR *nName,[in] long nMaxSil,[in] long nMaxTime,[in] long nStopDigitMask,[in] BSTR strASRVer);
[helpstring("method Pushurl")] HRESULT Pushurl([in]BSTR bstrURL );但是客户端调用新增的方法就会出现异常退出。调用其他旧有的接口方法就没事。这个还需要看哪些,请知道的人指教一下。
谢谢。

解决方案 »

  1.   

    什麽異常?有沒有debug看看是在什麽地方發生的異常?
      

  2.   

    客户端要重新编译,可能import缓存的是旧文件
      

  3.   

    我写了一个测试ap,返回异常是ACCESS VIOLATION 的异常。
    客户端已经用新文件重新编译过了。
    还有什么其他可能吗
    在线等待。
      

  4.   

    用vs2005 写的ap 从error code上看应该是返回了e_pointer的结果 是一个非法的指针。
      

  5.   

    也反注册过,又重新注册了。 用oleview查看新的方法已经存在了。还有高见吗
      

  6.   

    还没有进入接口方法,是客户端调用时出现excpetion ,return code :E_Pointer 可能还是缺少什么修改的地方,就是找不到还有哪里需要再修改
      

  7.   

    当类似 QueryInterface(REFIID, void** ppvObj) 这种调用,如果ppvObj==NULL往往返回E_POINTER的错误
      

  8.   

    我里面是嵌套创建的。比如先queryinterface一个接口然后用这个接口对象去create其他接口对象。现在接口对象都是好的。是接口中的方法调用不到。
      

  9.   

    问题好象发生在新方法在IDL中定义的位置造成的. 
      

  10.   

    [helpstring("method Pushurl")] HRESULT Pushurl([in]BSTR bstrURL ); 和其他的有区别没有,比如继承
      

  11.   

    出现异常又不代表是接口定义错误,你的函数实现是不是有问题也是个问题
    对于一个接口,我们应该尽量避免修改它。如果你想增加一个新功能,应该定义一个新功能。修改接口是违背COM原则的
      

  12.   

    异常出在客户端代码,当客户端代码调用新增的接口方法就会catch到异常。