各位大哥,我的程序是调用DLL时退出后老是报错,0x00000000指令引用0x00000000内存,改内存不能为read,我该如何处理?郁闷死了, ( 积分:

  • 主题发起人 主题发起人 yuanyoufa
  • 开始时间 开始时间
Y

yuanyoufa

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥,我的程序是调用DLL时退出后老是报错,0x00000000指令引用0x00000000内存,改内存不能为read,我该如何处理?郁闷死了, ( 积分: 100 )<br />各位大哥,帮帮忙啊,我已经调试几天了;<br>谢谢,0x00000000指令引用0x00000000内存,改内存不能为read
 
这种问题通常是变量传递问题,变量应该先分配空间后再传递!
 
对象不存在就调用了吧
 
我是调用一个DLL中的打印程序&nbsp;<br>代码如下:&nbsp;<br>调用代码如下:&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;aList:=TList.Create;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;aVariables&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;TStringList.Create;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aList.Add(ADOQuery1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//替换掉即可&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aVariables.Add(&nbsp;'Test&nbsp;&nbsp;&nbsp;&gt;&nbsp;&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;测试变量赋值&nbsp;');&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataModule1.PrintShare(&nbsp;'FH001&nbsp;',aList,aVariables,True);&nbsp;&nbsp;&nbsp;//替换掉即可&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aList.Free;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;&nbsp;<br>调用:&nbsp;<br>procedure&nbsp;&nbsp;&nbsp;TDataModule1.PrintShare(&nbsp;&nbsp;&nbsp;_GongID&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;string;&nbsp;&nbsp;&nbsp;_aList:&nbsp;&nbsp;&nbsp;TList;&nbsp;&nbsp;&nbsp;_aVariables&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;TStrings;_IsPrint&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;Boolean);&nbsp;<br>begin&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FR_SelReport(ADOCnn_Rldb,&nbsp;&nbsp;&nbsp;_GongID,&nbsp;&nbsp;&nbsp;'&nbsp;',&nbsp;&nbsp;&nbsp;_aList,&nbsp;&nbsp;&nbsp;_aVariables,_IsPrint);&nbsp;<br>end;&nbsp;<br>然后调用都正常,就在释放这个DLL的时候报错了~!&nbsp;<br>各位大哥帮帮我啊!
 
你先跟踪一下,看看是释放什么的时候出错的。
 
哈,突然想到,你是怎么调用DLL的?<br>使用stdcall还是cdecl呢?
 
字符串传递用pchar&nbsp;不要用string.还有在use里加入:shareMem单元。
 
最好自己跟踪调试.<br>猜测可能是aList.Free;&nbsp;的地方出的问题;<br>因为aList.Add(ADOQuery1);adoquery1是个指针,<br>alist.free之前应该先<br>for&nbsp;i:=&nbsp;0&nbsp;to&nbsp;alist.count-1&nbsp;do<br>&nbsp;&nbsp;Tadoquery(alist).free<br>最后在alist.free;<br><br>我只是猜测.这种av错误,需要细心去跟
 
en&nbsp;<br>alist&nbsp;传值不合适
 
后退
顶部