注意:你的初始化Com应该放在你的程序一开始执行的部分。比如说:在...App中的Init....初始化部分试试

解决方案 »

  1.   

    这是个console程序,AfxOleInit已经放在main的一开始了
      

  2.   

    _ConnectionPtr m_pConnection;AfxOleInit()
    把这两个位置换一下,我想是这个问题!!!
      

  3.   

    #include "stdafx.h"
    #include <stdio.h>#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")int main(int argc, char* argv[])
    {
    HRESULT hr;
    CoInitialize(0);
    // if (!AfxOleInit())
    // {
    // printf("ole 初始化??");
    // return FALSE;
    // } try {
    _ConnectionPtr m_pConnection;
    hr = m_pConnection.CreateInstance    
                           ("ADODB.Connection");///?建Connection?象
    if(SUCCEEDED(hr)) {
    MessageBox(NULL, "ok", "", MB_OK);
    } else {
    CString str;
    str.Format("hr=0x%08x", hr);
    MessageBox(NULL, str, "", MB_OK);
    }
    }
    catch(_com_error e)///捕捉?常
    {
    printf("?接数据?失?!\r\n??信息:%s",e.ErrorMessage());///?示??信息
    }  CoUninitialize();
    return 0;
    }1)AfxOleInit内部可能未调用CoInitialize;直接使用CoInitialize。
    2)注意m_pConnection的声明范围问题--COM库的初始化与释放
       另一做法:
       CoInitialize(0);
       {
    _ConnectionPtr m_pConnection;
             ...
       }
       CoUninitialize();
      

  4.   

    m_pConnection.CreateInstance(__uuidof(Connection));
      

  5.   

    msdn library-......../Platform SDK/Data Services/Microsoft Data Access Components(MDAC) SDK/Microsoft ActiveX Data Objects (ADO)/ADO Programmer's Guide/Section V:Appendixes/Appendix C:Programming with ADO/Using ADO with Microsoft Visual C++(到这里双击这个主题,你就可以选择你所想要的东西了)其实很多东西,还是MSDN里面最全,自己看吧
      

  6.   

    同意dyw(旺仔)的观点。
    ConInitianlize(NULL);
    应该就可以了
      

  7.   

    dyw(旺仔)说得很对,我缺少了CoInitialize(NULL);
    加上就对了
    结贴给分