我在IDL中定义连接对象的输出参数[out, retval] _ConnectionPtr* ppConn,但编译报错,如何处理?

解决方案 »

  1.   

    好像没人能回答这个问题,这个问题我3天前就问过了。csdn的高手都没了!
      

  2.   

    IDL 
    HRESULT GetResult( [out,retval]IDispatch** ppConn );实现类头文件 
    STDMEDHOD GetResult(/*[out,retval]*/IDispatch** pConn);
    STDMETHODIMPL CXXX::GetResult(IDispatch** ppConn)
    {
    *ppConn = NULL;
    try
    {
    _ConnectionPtr pConn;
    pConn.CreateInstance("ADODB.Connection");
    pConn.Open(...);
    pConn.AddRef();
    *pConn = pCon;
    }
    catch(...)
    {
    ;
    }
    return S_OK;
    }
      

  3.   

    Oh, my GodIXXXPtr pXx;pXx.CreateInstance(...);_ConnectionPtr pCon;pCon = pXx->GetResult();
      

  4.   

    哦 
    昨天我刚写了相同的代码
    [out,retval]_Connection **cn_ConnectionPtr pConnection;
    在函数里返回时写*cn = pConnection;即可但是还有其他问题
    返回的_Connection在使用的时候
    会出现 ADO3001错误
    还希望高手指点
      

  5.   


    //helper.idl: IDL source for helper file
    import "msado15.idl";// R1ADOdrsExe.idl : IDL source for R1ADOdrsExe.dll
    //
    import "oaidl.idl";
    import "ocidl.idl";
    import "helper.idl";    // import ADO thru helper IDL file
    [
    object,
    uuid(DF009B5B-A5CB-11D2-9062-00C04FB1784D),
    dual,
    helpstring("Ir1DisRS Interface"),
    pointer_default(unique)
    ]
    interface Ir1DisRS : IDispatch
    {
    [id(1), helpstring("method getRS")] HRESULT getRS([in,optional,defaultvalue(88)] short GY, [out, retval] _Recordset **ppRS);
    [propput, id(2), helpstring("property ConnString")] HRESULT ConnString([in] BSTR newVal);
    [id(3), helpstring("method UpdateBat")] HRESULT UpdateBat(_Recordset *ppRS);
    };[
    uuid(DF009B4F-A5CB-11D2-9062-00C04FB1784D),
    version(1.0),
    helpstring("R1ADOdrsExe 1.0 Type Library")
    ]
    library R1ADODRSEXELib
    {
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");
        importlib("c:\program files\common files\system\ado\msado15.dll");  // need ADO
    [
    uuid(DF009B5C-A5CB-11D2-9062-00C04FB1784D),
    helpstring("r1DisRS Class")
    ]
    coclass r1DisRS
    {
    [default] interface Ir1DisRS;
    };
    }- 微软全球技术中心 VC技术支持 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。 
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
      

  6.   

    acptvc说的是返回一个RecordSet,这个难度不大。现在主要是如果返回一个Connection的话,得到的Connection不能够用。
      

  7.   

    如果是返回一个字符串,客户端是asp,返回类型是否应当是VARIANT呢?应当是吧!但是我的一个变量是_variant_t的,asp是否认识这个类型呢?好像是不认识,怎样将_variant_t转为VARIANT呢?好像只有将VARIANT转为_variant_t的方法attch(VARIANT &),请高手赐教!
      

  8.   

    用Erlin的方法已经测试成功,不过需要接口类型转换。
    acptvc的方法试过,但总是编译出错,认为找不到msado15.h
    Erlin给你分了,谢谢