从昨天到现在了,还没解决。求帮助,WIN7下,外界EXE调用DLL, DLL内部使用ADO,创建连接对象时,卡死。求解决方案

YongApple 2010-07-08 12:32:24
一个EXE调用一个DLL,DLL内部使用ado连接access数据库,
在winxp系统下,使用没有问题。
com环境已经在EXE中初始化过了。~!
但是在 win7系统下,ado封装类,在创建CreateInstance("ADODB.Connection"); 时,就会卡在

CAdoConnection::CAdoConnection()
{
//创建 Connection 对象---------------------------
m_pConnection.CreateInstance("ADODB.Connection");


会卡死在 m_pConnection.CreateInstance("ADODB.Connection");这句话处。
具体是卡在这条语句 hr = CoCreateInstance(rclsid, pOuter, dwClsContext, __uuidof(IUnknown), reinterpret_cast<void**>(&pIUnknown));

请问 怎么解决啊。
...全文
346 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
intLiang 2012-03-01
  • 打赏
  • 举报
回复
跟我一模一样的问题。。试了楼主的方法行得通,困扰了我一天了,非常感谢!不过真想知道是什么原因。。??
emvtech 2011-06-29
  • 打赏
  • 举报
回复

咋解决的,能说详细点吗?
liwenlong26363 2011-01-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 andylau00j 的回复:]
我测试,,把 数据库连接对象_ConnectionPtr m_pConnection,放到 调用DLL,的exe 里面就可以 创建成功,
但是在DLL里面创建,就是会卡死在 m_pConnection.CreateInstance( __uuidof(Connection) );
我在想是不是环境的问题。。哎
搞不清楚。
[/Quote]
我遇到的问题和你一模一样~你解决了吗~大哥~告诉我下~
nwao7890 2010-08-24
  • 打赏
  • 举报
回复
原来是这么解决的啊
验证码识别 2010-07-08
  • 打赏
  • 举报
回复
ado 需要的DLL文件是否已存在
YongApple 2010-07-08
  • 打赏
  • 举报
回复
呵呵, 问题解决了,,
在win7 专业版 系统下,,vs2005,开发环境。VC++。

我在 调用dll的 EXE,里面,创建一个局部 ado连接对象,并 打开一个 空的数据库。
就能 让 DLL,里面的 创建 ado连接对象和 打开 mdb数据库,顺利创建和通过了。
我的DLL,是MFC DLL,貌似 ,没有DLLMAIN.。不过zzz3265 的建议和想法,是挺好的,学习了,谢谢各位。、
Yofoo 2010-07-08
  • 打赏
  • 举报
回复
CreateInstance 是否是由Dllmain 里面直接或间接 调用, 或者有CAdoConnection 类似的全局对象

Dllmain时某些情况系统会暂时阻止Dll的加载, 但是CreateInstance需要加载Dll, 这样可能会卡死
YongApple 2010-07-08
  • 打赏
  • 举报
回复
csdn的大牛们,都出来看看啊
YongApple 2010-07-08
  • 打赏
  • 举报
回复
自己顶吧。

YongApple 2010-07-08
  • 打赏
  • 举报
回复
我测试,,把 数据库连接对象_ConnectionPtr m_pConnection,放到 调用DLL,的exe 里面就可以 创建成功,
但是在DLL里面创建,就是会卡死在 m_pConnection.CreateInstance( __uuidof(Connection) );
我在想是不是环境的问题。。哎
搞不清楚。

疯魔症 2010-07-08
  • 打赏
  • 举报
回复
会不会win xp和 win 7系统不兼容呀
疯魔症 2010-07-08
  • 打赏
  • 举报
回复
不会,帮你顶了
YongApple 2010-07-08
  • 打赏
  • 举报
回复
自己顶吧 ·!
YongApple 2010-07-08
  • 打赏
  • 举报
回复
都在的,C盘里面 ,,

#import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" rename("EOF","adoEOF"), rename("BOF","adoBOF")
using namespace ADODB; //在用到ADO类的头文件中添加此语句


这些都在,,而且,,我测试,,把 数据库连接对象,在 调用DLL,的exe里面就可以 创建成功,
但是在DLL里面,就是会卡死在
m_pConnection.CreateInstance( __uuidof(Connection) );

4,014

社区成员

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

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