我建了一个数据库表(类似error code的出错信息表,三个字段为“出错信息号”int、“出错信息内容”char(255)、“出错级别”(int)),此表记录了可能出现的错误信息.
我现在就想编一个dll程序A,当主程序B调用A的时候,B只要向A输入一个代表"出错信息号"的int数,A就能根据这个int数向数据库查出相应的'出错信息内容'和'出错级别',并向程序A返回'出错级别'.
但是我在编写Dll的时候如果调用的了ado来查询的话,调用的时候就会出现以下错误:Project Project1.exe raised exception class EolesysError with message '尚未调用CoInitialize'.process stopped.use step or run to continue.请各位大虾赐教!

解决方案 »

  1.   

    是不是没有创建数据库对象阿?我原来也碰到过类似的问题,Dll有一个入口和出口,在入口处要创建数据库对象,出口处释放该对象,可惜源码不在这台机器上,要不就可以发给你看看,如果要留下Email。
      

  2.   

    那就创建一下
    coinitialize(nil);
      

  3.   

    初始化COM库 
    如果在DLL中使用了TADOConnection之类的COM组件,或者ActiveX控件,调用时会提示 “标记没有引用存储”等错误,这是因为没有初始化COM。DLL中不会调用CoInitilizeEx,初始化COM库被认为是应用程序的责任,这是Borland的实现策略。
    你需要做的是
    1、引用Activex单元,保证CoInitilizeEx函数被正确调用了
    2、在单元级加入初始化和退出代码:
    initialization
      Coinitialize(nil);
    finalization
      CoUninitialize;
    end.
    3、在结束时记住将连接和数据集关闭,否则也会报地址错误。