退出程序的时候,提示错误信息:access violation at 0x77466892;write of address 0x00030fec自己写了一个dll文件,两天前用着一切正常;后安装过几个控件就出现了这个错误。但在测试程序中是正常的,能是什么原因?因开发的需要,那几个控件不能卸载。

解决方案 »

  1.   

    access violation at 0x77466892;write of address 0x00030fec
    这种原因最不好找了,尤其是dll中。
      

  2.   

    这个问题很常见的内存地址访问错误。
    一般是由于:使用了未实例化的变量。DLL有源码的话,在DLL里断点跟踪下,看看对象是否为NIL但又什么了它等情况,若没源码……
      

  3.   

    这个问题我知道,就是在“退出”程序时,没有将那个DLL文件释放掉才出错的
    楼主加载DLL的方式肯定就是“静态”方式,建议楼主用“动态”方式
    或者在“退出”时,释放掉那个DLL文件
      

  4.   

      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
      

  5.   

    DLL中的func是不是用了string类型做参数了,改为PChar试试
      

  6.   

    主程序,OnClose中,写上ExitProcess(0),交给Windows回收一切,就行了