分类存档: MFC

CreateInstance(__uuidof(Connection)); 不支持此接口

最近碰到一个问题:在vs2010的mfc中使用ado连接access数据库时,在win7下能够连接成功,但把该程序拿到xp下就无法连接到数据库警告“不支持此接口”。百度了许久无法决解,又谷歌搜索了许久,终于发现了解决办法。

当时看微软的这篇文章http://support.microsoft.com/kb/2517589/zh-cn

我具体的代码是这样的

stdafx.h中

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace \
rename("EOF","adoEOF")

ado连接部分代码

hr=m_pConnection.CreateInstance(__uuidof(Connection));
if (FAILED(hr)){
	_com_error e(hr);
	AfxMessageBox(e.ErrorMessage());
	return;
}

上述代码生成的程序,在win7下能正常运行,而将程序程序放到xp虚拟机下则是出现“不知此此接”口的错误。

将经stdafx.h中的

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace \
rename("EOF","adoEOF")

改成

#import "msado60_Backcompat.tlb" no_namespace rename("EOF","adoEOF")

便可解决问题,当然还要下载一下文件。

下载


  • Msado60_Backcompat_i386.tlb
    (http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E2-9BDA0DF02DB3/msado60_Backcompat_i386.tlb)

  • Msado60_Backcompat_x64.tlb
    (http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E2-9BDA0DF02DB3/msado60_Backcompat_x64.tlb)

  • Msado60_Backcompat_ia64.tlb
    (http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E2-9BDA0DF02DB3/msado60_Backcompat_ia64.tlb)