调用动态连接库后,调用窗口关闭时报错,在线等待...

GoldWood 2002-11-20 04:33:37
我做了一个DAO读ACCESS数据库的动态连接库,首先在动态连接库中无法打开ACCESS2000的数据库,我把数据库名和表名传到动态连接库中,把要取得记录放在一个结构中,这个结构也是传入的,并在动态连接库中动态分配内存,这一切都运行正常,但问题出在调用的程序中,我不运行库中的函数时一切正常,当运行是正常执行,但在退出调用动态库的对话框时程序报错:
Unhandled exception in testdb.exe(MSVCRTD.DLL):0xC0000005:Access Violation
我定了一下位,是SBHEAP.C中的pHeader->bitvEntryHi和pHeader->bitvEntryLo停止运行(pHeader是什么东西)。
请问一下这大概是什么原因,如何查找?谢谢!
...全文
54 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoldWood 2003-02-18
  • 打赏
  • 举报
回复
UP
GoldWood 2002-12-11
  • 打赏
  • 举报
回复
up
GoldWood 2002-12-11
  • 打赏
  • 举报
回复
up
GoldWood 2002-11-22
  • 打赏
  • 举报
回复
对不起,写错了?
to paul2002():再DLL中的方式能说详细点吗。
GoldWood 2002-11-22
  • 打赏
  • 举报
回复
to Zark(金陵五月):我只是打开一次数据库,然后关闭数据库,还没有对数据进行访问就出现此问题。
to zhangyilan(数字通信) & ruihuahan(飞不起来的笨鸟):若是您说的这种情况,那该如何查找。
to paul2002():再DAO中的方式能说详细点吗。

谢谢!
paul2002 2002-11-22
  • 打赏
  • 举报
回复
你试试在退出对话框前,先调用dll中的一个End函数,在这个函数中对所以DAO对象进行删除,然后再调用AfxDaoTerm。
Zark 2002-11-22
  • 打赏
  • 举报
回复
大约是错在这儿:

"要取得记录放在一个结构中,这个结构也是传入的,并在动态连接库中动态分配内存,"

在DLL中分配内存,在DLL外部读这块内存,那么传入结构时要用 **而不*,请检查一下,这是最常见的错误。如不是,那么贴代码看。
paul2002 2002-11-22
  • 打赏
  • 举报
回复
是不是这个:
void AfxDaoTerm( );

Remarks

This function terminates the DAO database engine. Typically, you only need to call this function in a regular DLL; an application will automatically call AfxDaoTerm when it is needed.

In regular DLLs, call AfxDaoTerm before the ExitInstance function, but after all MFC DAO objects have been destroyed.

For more information about calling AfxDaoTerm, see the articleDAO: Using DAO in DLLs in Visual C++ Programmer’s Guide. For related information, see Technical Note 54.

ruihuahan 2002-11-21
  • 打赏
  • 举报
回复
gz
zhangyilan 2002-11-21
  • 打赏
  • 举报
回复
估计是有指针未释放
GoldWood 2002-11-21
  • 打赏
  • 举报
回复
up

15,471

社区成员

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

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