调用dll的问题,经典错误

wjhx 2012-04-22 09:48:57
退出程序的时候,提示错误信息:access violation at 0x77466892;write of address 0x00030fec

自己写了一个dll文件,两天前用着一切正常;后安装过几个控件就出现了这个错误。但在测试程序中是正常的,能是什么原因?因开发的需要,那几个控件不能卸载。
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjhx 2012-05-16
  • 打赏
  • 举报
回复
没有找以合适的解决办法,换了。
蓝色光芒 2012-04-24
  • 打赏
  • 举报
回复
主程序,OnClose中,写上ExitProcess(0),交给Windows回收一切,就行了
Jekhn 2012-04-24
  • 打赏
  • 举报
回复
DLL中的func是不是用了string类型做参数了,改为PChar试试
山东蓝鸟贵薪 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
退出程序的时候,提示错误信息:access violation at 0x77466892;write of address 0x00030fec

自己写了一个dll文件,两天前用着一切正常;后安装过几个控件就出现了这个错误。但在测试程序中是正常的,能是什么原因?因开发的需要,那几个控件不能卸载。
[/Quote]
这个问题我知道,就是在“退出”程序时,没有将那个DLL文件释放掉才出错的
楼主加载DLL的方式肯定就是“静态”方式,建议楼主用“动态”方式
或者在“退出”时,释放掉那个DLL文件
wjhx 2012-04-23
  • 打赏
  • 举报
回复
H:=LoadLibrary(PChar('mydll.dll'));
if H<>0 then
begin
p:=GetProcAddress(H, PChar('func'));
if Assigned(p) then
uKey:=p(str);
end;
FreeLibrary(H);

动态调用仍然出错,只是地址换了,现在成了0x76f56892
kaikai_kk 2012-04-23
  • 打赏
  • 举报
回复
無代碼無真相
cntigercat 2012-04-23
  • 打赏
  • 举报
回复
放源码来瞅瞅
我看见佛 2012-04-22
  • 打赏
  • 举报
回复
这个问题很常见的内存地址访问错误。
一般是由于:使用了未实例化的变量。DLL有源码的话,在DLL里断点跟踪下,看看对象是否为NIL但又什么了它等情况,若没源码……
unicodestring 2012-04-22
  • 打赏
  • 举报
回复
access violation at 0x77466892;write of address 0x00030fec
这种原因最不好找了,尤其是dll中。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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