服务端的代码如下:
STDMETHODIMP TNetDiskRDMImpl::Demo(BSTR* s)
{
    WideString Info = "Succeeded";
    *s = Info.Detach();
    return S_OK;
}客户端的代码如下:
WideString Info;
WebConnection->Connected = true;
IDispatch* disp = (IDispatch*)(WebConnection->AppServer);
INetDiskRDMDisp dispServer((INetDiskRDM*)disp);
HRESULT hr = dispServer.Demo(&Info);
WebConnection->Connected = false;
------------------------------------------------------------
客户端调用服务端想获取信息,现在信息可以获取来,能够正确获取“Succeeded”,但是每次调用的时候在BCB中总是跳出一个CPU的调试窗口。另外我还写了一个DLL,对客户端进行了简单的包装,但是在VC中调用时总是出现“用户断点异常”的对话框。我想一定是什么地方出现问题,希望高人指点一下。
我的环境是:BCB6.0+SP4 、Windows2000 + SP4、IIS 5.0

解决方案 »

  1.   

    WideString Info;
    dispServer.Demo(&Info);
    =============================================
    在SDK中,BSTR可以强制类型CONST WCHAR*,
    但WCHAR* 不应该转为BSTR.
    ---------------------------------------------
    你直接用BSTR试试
      

  2.   

    roscoe(草上飞) :还是不好使啊!一调用的时候还是出现一个CPU的调试窗口~~~~~
      

  3.   

    HRESULT hr = dispServer.Demo(&Info);
    先把这一行注释掉,是不是还会出现
      

  4.   

    VCL我不熟悉代码,WideString.Detach 是不是等价于::SysAllocString()
    另外查询接口,特别是DCOM中,强制转换好象不太好吧?,因为接口的对象聚合与离散,在COM中是通过
    IUnknown::QueryInterface的本地版与远程版协同实现的.
      

  5.   

    这么试试.
    STDMETHODIMP TNetDiskRDMImpl::Demo(BSTR* s)
    {
        // WideString Info = "";
        *s = SysAllocString( "Succeeded" );//Info.Detach();
        return S_OK;
    }
      

  6.   

    roscoe(草上飞) :
    试过了上面的方法,还是不好使,但谢谢你的回帖!