Exe 调用 ADO检索的 dll 文件,在关闭 exe 文件时,报错了~~~

LngDotin 2011-05-29 09:40:32
dll 文件源码如下:

extern "C" __declspec(dllexport) void __stdcall ListON(TListView *ListView)
{
TListItem *NewItem;
TADOQuery *Query = new TADOQuery(Application);
Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "MyDat.dat;Jet OLEDB:Database Password=aabbccdd;";
Query->SQL->Text = "select name from table1";
Query->Open();
ListView->Clear();

while(!Query->Eof)
{
ListView->AddItem(IntToStr(ListView->Items->Count+1),0);
NewItem = ListView->Items->Item[ListView->Items->Count-1];
NewItem->SubItems->Add(Query->FieldByName("name")->AsString);
NewItem->ImageIndex = 1;
Query->Next();
}

delete Query;
}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Exe 文件源码如下:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE Hdl;
Hdl=::LoadLibrary("Test.dll");
void __stdcall (*ListON)(TListView *);
ListON = (void __stdcall (*)(TListView *))::GetProcAddress(Hdl,"ListON");
ListView1->Clear();
ListON(ListView1);
::FreeLibrary(Hdl);
}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

执行 Button1 的点击事件时,列表正常,就是稍慢一点,但在关闭 Form1 时,会出现下面出错提示:

Access violation at address 004522B2 in module 'ThisExe.exe'. Write of address 010FE1D0.

请各位老大帮助看看原因出在什么地方了?
...全文
72 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LngDotin 2011-08-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ccrun 的回复:]
看起来没有明显的错误,你的测试工程,如果不点击Button1,退出时会提示出错吗?
[/Quote]

——回妖哥:不点 Button1 ,退出时一切正常。
      程序就一个单元文件,没有其他的了,正常学习做 ADO 检索的 dll , 不是写软件,嘿嘿。
My_Love 2011-05-30
  • 打赏
  • 举报
回复
可能是你的dll没有加动态内存管理组件。
那么在dll里new的在exe里释放可能会出现内存AV!
最好给dll只传句柄不传VCL对象。
ccrun.com 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bigfog 的回复:]
帮顶一下,希望妖哥能做一下实验,看看有什么其他解决的方法
[/Quote]

我已测试过,没有明显的错误。怀疑是楼主单元中其他代码引起的AV。
bigfog 2011-05-30
  • 打赏
  • 举报
回复
帮顶一下,希望妖哥能做一下实验,看看有什么其他解决的方法
ccrun.com 2011-05-29
  • 打赏
  • 举报
回复
看起来没有明显的错误,你的测试工程,如果不点击Button1,退出时会提示出错吗?
zhgwbzhd 2011-05-29
  • 打赏
  • 举报
回复
在delete之前增加一个Query->close()试试呢??

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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