求教一个创建Connection对象失败的问题

ayiyi0910 2013-04-11 05:03:44
代码如下
BOOL ADOConn::LinkDB()
{
// 初始化OLE/COM库环境
if( !m_bCoInitialize)
{
if( S_OK != ::CoInitialize(NULL))
{
AfxMessageBox(_T("初始化COM库错误!"));
}
else
{
m_bCoInitialize = true;
AfxMessageBox(_T("初始化COM库成功!"));
}
}

try
{
// 创建Connection对象
HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");
if( SUCCEEDED( hr))
{
..........
}
else
{
CString strTemp;
strTemp.Format(_T("创建Connection对象失败! %d"), hr);
AfxMessageBox(strTemp);
}
........
程序在本地可以正常运行, 把生成的exe放到其他电脑上运行,如果电脑装了vs的话,可以正常运行,没有装的话就会创建Connection对象失败, 打印的hr为-2147467262, 求教一下是什么原因
1. 初始化COM库成功是成功的
2. 工程的配置属性->常规里我也把MFC的使用设成“在静态库中使用MFC”了
...全文
439 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiuYinChina 2013-04-16
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/robertbaker/4726297
南安风语者 2013-04-16
  • 打赏
  • 举报
回复
嗯. 楼上说的对 放到win2000下去编译
zyq5945 2013-04-12
  • 打赏
  • 举报
回复
你是用#import导入的ADO,到这个路径下拷贝。 在运行中用“regsvr32 ado绝对路径和文件名"注册。
ayiyi0910 2013-04-12
  • 打赏
  • 举报
回复
出了这个办法还有其他的办法没 另外弱的问一句,怎么把ADO拷贝过去呀
zyq5945 2013-04-12
  • 打赏
  • 举报
回复
在XP上编译,在WIN7上可以运行。
ayiyi0910 2013-04-12
  • 打赏
  • 举报
回复
引用 5 楼 zyq5945 的回复:
你是用#import导入的ADO,到这个路径下拷贝。 在运行中用“regsvr32 ado绝对路径和文件名"注册。
郁闷, 这个目标机是客户的,他们不然修改上面的东西, 我的开发机是win7 sp1, 目标机是win2000
ayiyi0910 2013-04-12
  • 打赏
  • 举报
回复
在Windows 7 SP 1 或 Windows Server 2008 R2 SP 1 或者安装了 KB983246补丁的机子上编译的ADO应用程序,不能运行在低级别的操作系统 http://support.microsoft.com/kb/2517589/zh-cn 我的应该是这个问题,但是我打了补丁KB2640696还是会出现这个问题 我安装网上一个办法: 1. 下载: http://download.microsoft.com/download/6/4/3/64318ED2-7E18-4A5C-80E2-9BDA0DF02DB3/msado60_Backcompat_i386.tlb 2. 把msado60_Backcompat_i386.tlb放在C:\Program Files\Common Files\System\ado\目录下, 然后用 regtlibv12.exe去注册 3. 把#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace \ rename("EOF","adoEOF") 改成: #import "msado60_Backcompat.tlb" no_namespace rename("EOF","adoEOF") 但是编译的时候会报错: fatal error C1083: 无法打开类型库文件:“msado60_Backcompat.tlb”: No such file or directory 我改成#import "c:\Program Files\Common Files\System\ado\msado60_Backcompat.tlb" no_namespace rename("EOF","adoEOF")一样报错
zyq5945 2013-04-11
  • 打赏
  • 举报
回复
将开发机的ADO拷贝过去,用Regsvr32注册.
ayiyi0910 2013-04-11
  • 打赏
  • 举报
回复
引用 1 楼 zyq5945 的回复:
用下面的代码看报什么错误. 应该是ADO版本不一致或者没有注册导致的,把开发机的ADO拷贝过去,用Regsvr32注册下。 C/C++ code?1234567HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");if (FAILED(hr)){_com_error e(hr);AfxMessage……
报的错误是不支付此接口
zyq5945 2013-04-11
  • 打赏
  • 举报
回复
用下面的代码看报什么错误. 应该是ADO版本不一致或者没有注册导致的,把开发机的ADO拷贝过去,用Regsvr32注册下。

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

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧