问题同这个一样 http://topic.csdn.net/t/20051019/13/4336484.html
但此楼猪 没有说明如何解决的。
======================================
在程序中我动态调用DLL中的函数,DLL文件中包含一个form,引出的函数将建立一个form,执行都很正常,但在freelibrary时出错,提示如下:     
  Project   e:\delphi\test.exe   raised   too   many   consecutive   exceptions:'access   violation   at   0x00000000:read   of   address   0x00000000',Process   stopped. ……
======================================
有人说是 sharemem的问题,但我都加了怎么还是这样啊~~早上还好好的~真是郁闷啊

解决方案 »

  1.   

    只要dll里用到了string类型 问题就太多了,你看看能不能替换成PChar
      

  2.   

    library LibraryName; uses
      ShareMem,......;{$R *.res}var
      DllApplication: TApplication;
      DllScreen: TScreen;
      DllHintWindowClass: THintWindowClass;     //前面两个要,这个你看着办......procedure DllUnloadProc(Reason: Integer); register;
    begin
      if Reason = DLL_PROCESS_DETACH then
      begin
        Application := DllApplication;
        Screen := DllScreen;
        HintWindowClass := DllHintWindowClass;
      end;
    end;exports
      ......;begin  
      DllApplication := Application;
      DllScreen := Screen;
      DllHintWindowClass := HintWindowClass;
      DllProc := @DllUnloadProc;
    end.------------------------------
    另外调用该DLL的Project的dpr中也要在第一个uses ShareMem
      

  3.   

    dulei115:
    你是给我演示??我不明白 为什么“//前面两个要,这个你看着办” [估计是你复制别程序里的吧]
    ,你说的 “另外调用该DLL的Project的dpr中也要在第一个uses ShareMem” 这个我知道啊~也发了~~,我其他的dll 都可以正常释放的,就一个不可以。hongqi162:
    你这个建议有点不现实吧。。难道dll里就不可以用string了???==============================
    caike(ck)   鄙视!!!鄙视!!!鄙视!!!鄙视!!!鄙视!!!鄙视!!!鄙视!!!你~
      

  4.   

    呵~~,还挺凶。不清楚你的调用源码,也不清楚你的DLL源码,不好说。但报内存访问错,一般地有如下原因:访问已经释放了的对象或是动态数组元素;建议你自己仔细查查。BTW,对于给你帮助的人,就算没有帮到你,也不要用这种态度。做人要厚道。
      

  5.   

    ShareMem必须是DLL和项目的USE的第一单元,有个Borlandmm.dll要一起发布
      

  6.   

    dinglinger:
     我胸了?我对他们没什么恶意啊~~只是对 网上 那个 caike(ck) 表示不满~
    你业太大惊小怪了;
    不过~~对以上的人表示谢意~~可能我对 ShareMem 太抱 幻想了~~以为它是万能的~~
      

  7.   

    用dll的时候, delphi要打补丁
      

  8.   

    楼上的 要打什么补丁? 我用的是D5,我已经打了3个补丁了 2个是ado的 还有个忘了。
    你说的补丁是什么?
      

  9.   

    hsmserver(撒哈拉之雨的悲伤)  正解,我就是这样做的
      

  10.   

    ShareMem必须是DLL和项目的USE的第一单元
    ==========
    这个我本来就是这样的是不是 有其他的原因也出现
     raised   too   many   consecutive   exceptions:'access   violation   
    这个错误啊~~