dll中的窗体中有个按钮调用 try
ADOConnection1.Connected:=True ;
Application.MessageBox(连接正确);
except
Application.MessageBox(连接错误);
end;来检查连接是否正确.在给定连接字符串后.调用上面的代码,可以弹出 "连接正确"的对话框,但过一两秒就会出来错误
---------------------------
Debugger Fault Notification
---------------------------
Project F:\Delphi_Project\Delphi\MyStudy\Dll调用\Project1.exe raised too many consecutive exceptions: 'access violation at 0xff640158: read of address 0xff640158'. Process Stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------只要不调用ADOConnection1.connected:=True;就都正确.只要调用了就会出错.
什么原因啊delphi7 + win2000 

解决方案 »

  1.   

    在单元最下面 end.的上面加入
    initialization
      CoInitialize(nil);finalization
      CoUninitialize;
      

  2.   

    initialization 
      CoInitialize(nil); finalization 
      CoUninitialize;加了.TADOConnection 也是动态创建的.
    真是搞不明白了.
      

  3.   

    把两个Application.MessageBox注掉试试
      

  4.   

    试过,不行.问题奇怪在于ADO连接测试成功后要过一两秒钟才出错.
      

  5.   

    CoInitialize和CoUninitialize应该放在dll的入口函数里,比如这样:procedure DLLEntry(dwReason:DWord);
    begin
      case dwReason of
        DLL_PROCESS_ATTACH:CoInitialize(nil);
        DLL_PROCESS_DETACH:CoUnInitialize();
      end;
    end;代码太少,本身看不出什么错误来,问题应该不在这里,这里的application从新传递过handle么?是不是那个对象已经被释放了?