开发环境:DELPHI2005+WIN XP+OFFICE XP
使用代码:AccessDB := CreateOleObject('ADOX.Catalog');
          AccessDB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DBFullName);
使用环境:将此代码写在DLL文件中。
运行主程序后,只要调用到此DLL文件中的代码,就提示:抛出异常错误,EOLEsyserror ,尚未调用 coinitialize请问如何解决,谢谢各位

解决方案 »

  1.   

    DLL中使用COM对象要调用coinitialize初始化
    uses
      ActiveX;
    begin
      CoInitialize(nil);
    end.
      

  2.   

    具体如何加代码呢?是直接这么加在AccessDB := CreateOleObject('ADOX.Catalog');前面吗?我加了还是出错啊。
      

  3.   

    我是在DLL工程文件*.DPR中加的
      

  4.   

    http://www.ccw.com.cn/htm/app/aprog/01_4_25_4.asp
    参考
      

  5.   

    我是加在DPR文件中了啊,为什么出错呢?我加在了AccessDB := CreateOleObject('ADOX.Catalog');前面。
    begin
    CoInitialize(nil);
    AccessDB := CreateOleObject('ADOX.Catalog');
    AccessDB.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DBFullName);
    end;
    这样加法对吗?谢谢
      

  6.   

    用了CoInitialize(nil);还报错?什么错?
      

  7.   

    不可能吧,你在DLL开始的时候写吧,别写在AccessDB := CreateOleObject('ADOX.Catalog');前