我用的是DELPHI6,打了补丁2,听说没打补丁不会出现问题,不知是否如此?

解决方案 »

  1.   

    1.记得把ShareMem放在DLL的Uses列前面。
    2.如果你没有把所有的子窗口都关闭,千万不要FreeLibrary。
      

  2.   

    我常碰到这样的问题。
    在Delphi5时代
    DLL中的FORM都是MDICHILD。调用含有ADO控件的DLL时就会出错。
    于是我采用了这样的方式:
    在主程序的项目文件中
      Application.Initialize;下加入如下语句:
      CoInitialize(nil);
    成功搞定。后来,升级到Delphi6以后,原来在Delphi5下,编译运行正常的程序到Delphi6下重新编译运行就出错了。最后,打了Delphi6的Update2#后搞定!
      

  3.   

    我现在是这么做,但这种情况是否太奇怪了,Loadlibrary却不能FreeLibrary
      

  4.   

    1:ftp://166.111.141.61
    2:ftp://ftp.cs.pku.edu.cn
    3:ftp://202.109.129.55:105/kaifa/delphi/delphi6.rar
    4:http://dl1.51soft.com:8080/soft/125/delphi6.zip
    5:http://www.eastime.com/it/diy/delphi6.zip
    6:http://202.108.250.86/temp/temp/delph6.rar
    7:http://213.64.92.115
    8:http://202.96.70.229/cakk/delphi/app/D6_upd2_ent.exe
    9:ftp://water-e.dhs.org/Incoming/NewSoft/BORLAND.DELPHI.V6.
    ENTERPRISE-ZENiTH/
    10:ftp://water-e.dhs.org/Incoming/NewSoft/Borland.Delphi.v6.0.
    Enterprise-RiSCiSO/
    11.ftp://ftpc.borland.com/pub/delphi/techpubs/delphi6/d62ent.zip
    12.ftp://ftpd.borland.com/download/delphi/devsupport/delphi6/D6_upd2_ent.exe
    13.http://202.96.70.229/cakk/delphi/app/D6_upd2_ent.exe 
    14.http://www.delphibbs.com/delphibbs/download.asp 去试吧,可能8好使。
      

  5.   

    thank  borlandor(五角▲大民) (
      

  6.   

    可以肯定是你的问题  每个FORM都写成DLL简直不可思意
      

  7.   

    上面的兄弟不要这么武断,也不是每个FORM都写成DLL,是每个功能项都写成DLL。
    如权限分配算一个功能项,操作员分配算一个功能项
      

  8.   

    能否把你的的dll.source给我看看!
      

  9.   

    to楼上的:
    谢谢。
    太大了,而且在你那边无法运行,主要是用了TCHARTFX和EHLIB的DLL有问题。
    原因是这样的:
    当两个DLL都使用一个单元,装载第一个DLL的时候执行了单元的初始化,创建一些全局的变量,装载第二个DLL的时候就不执行该单元的初始化,当调用FREELIBARAY时执行了单元的终止化:),释放那些全局的变量。那么情况可能是一个DLL还需要的全局变量已经被另一个DLL释放掉了。我觉得DELPHI是否应该做到,如果这个单元还在被其他DLL使用,就不要调用单元的终止化了,呵呵,大家不要扔石头,欢迎发表高见。
      

  10.   

    to楼上的:
    谢谢。
    太大了,而且在你那边无法运行,主要是用了TCHARTFX和EHLIB的DLL有问题。
    原因是这样的:
    当两个DLL都使用一个单元,装载第一个DLL的时候执行了单元的初始化,创建一些全局的变量,装载第二个DLL的时候就不执行该单元的初始化,当调用FREELIBARAY时执行了单元的终止化:),释放那些全局的变量。那么情况可能是一个DLL还需要的全局变量已经被另一个DLL释放掉了。我觉得DELPHI是否应该做到,如果这个单元还在被其他DLL使用,就不要调用单元的终止化了,呵呵,大家不要扔石头,欢迎发表高见。