WIN7下,外界EXE调用DLL, DLL内部使用ADO,创建连接对象时,卡死。求解决方案

YongApple 2010-07-08 12:29:49
一个EXE调用一个DLL,DLL内部使用ado连接access数据库,
在winxp系统下,使用没有问题。
但是在 win7系统下,ado封装类,在创建CreateInstance("ADODB.Connection"); 时,就会卡在

CAdoConnection::CAdoConnection()
{
// ::CoInitialize( NULL );
// ::CoInitializeEx( NULL, COINIT_MULTITHREADED );

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


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

请问 怎么解决啊。
...全文
292 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
YongApple 2012-03-22
  • 打赏
  • 举报
回复
后来,在 exe,的
BOOL CXXXApp::InitInstance()
里面,,初始化 com环境, 创建一个临时的,,ado connect 连接对象,,就没事了,,怪事儿啊
brightlife_cn 2012-03-22
  • 打赏
  • 举报
回复
楼主那你最后杂解决的么?解决了没么,为啥发帖子不说完呢么~!!!!!!!!!!!!!!!!!!1
bolingyun 2010-12-16
  • 打赏
  • 举报
回复
我也遇到相同的问题,在执行
hr = m_pStdioDB.CoCreateInstance(__uuidof(StdioDB), NULL, CLSCTX_ALL);
的时候完全卡死,没有反应了。而用其他的EXE调用该DLL,调用方式一样,是正常的。
hzy694358 2010-07-09
  • 打赏
  • 举报
回复
dll和exe是否用的用样的编译器?
zyq5945 2010-07-08
  • 打赏
  • 举报
回复
是不是静态链接MFC的DLL,是的话换成共享链接MFC的DLL再试试看.
YongApple 2010-07-08
  • 打赏
  • 举报
回复
我测试,,把 数据库连接对象,在 调用DLL,的exe里面就可以 创建成功,
但是在DLL里面,就是会卡死在
m_pConnection.CreateInstance( __uuidof(Connection) );

4,018

社区成员

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

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