在调用dll时,经常(不是每次)会出现下面这个错误:"0x010f3e7d"指令引用的"0x01690000"内存。该内存不能为"read"。
要终止程序,请单击"确定"。这个dll包含的内容如下:
...
type
   TCustomer_DM=class(ICustomer_DM)
   private
    FConn:TADOConnection;
     ...
   public
    constructor Create;override;
    destructor Destroy;
   end;
....constructor Create;
begin
 FConn:=TADOConnection.create(nil);
end;destructor Destroy;
begin
 FConn.free;
end;

解决方案 »

  1.   

    你调用dll的函数呢?如果要传递adoConnection等vcl控件,请在该dll的头部加上(一定要在第一个位置)uses shareMem;
    不知道你注意了没有,否则会报内存出错
      

  2.   

    我把建立对象的语句放在Form.OnCreate,这个错误就不出现了。
    如果放在窗体上的某个Button里就会出错,奇怪!
      

  3.   

    呵呵,我的问题解决了。现总结如下:1、如果在dll中封装类,并在主程序中初试化这个类的对象的话,
    初试化语句一定要放在Form.Oncreate中,然后在OnDestroy中释放。
    如果在Form形成之后再初试化的话,则程序关闭时会出现我开头提到
    的错误。至于为什么会这样,我也不知道。2、daniel007(添) 帮我解决了另外一个问题,所以我决定给你50分。
    切记:如果要传递adoConnection等vcl控件,请在该dll的头部加上(一定要在第一个位置)uses shareMem;否则在程序关闭时会报内存出错。此贴到此为止。