我将做的东东制作成动态连接库,如果上面没有ADOQUERY组件,则没有问题,但是当我放了ADOQUERY组件之后,程序在执行到TFORM.CREATE(NIL)时总是报错,说还没有调用CoInitialize,我到帮助力找了一下,CoInitialize是程序中如果包含了COM组件后,所必须调用的,但当我调用CoInitialize(NIL)的时候,CoInitialize又没有声明,请教各位高手两个问题
1.ADO组件是COM吗
2.CoInitialize要怎样声明,怎么样使用
(最好可以给个简单的例子)

解决方案 »

  1.   

    dll是在线程中执行的,需要自己初始化,引用activex单元,然后调用CoInitialize(NIL)看看
      

  2.   

    是在DLL里调用,还是在调用DLL的程序中调用
      

  3.   

    1.ADO组件是COM组件
    2.再文件中uses ComObj, ActiveX;
    3。加入
    Initialization
      CoInitialize(nil);
    Finalization
      CoUnInitialize;
      

  4.   

    楼上的兄弟,
    Initialization
      CoInitialize(nil);
    Finalization
      CoUnInitialize;
    这两局要加在什么位置?
      

  5.   

    放在你单元文件的end.的上面就可以了
      

  6.   

    uses ActiveX;...  CoInitialize(nil);
      

  7.   

    ComObj, ActiveX;
    这两个都要吗?
      

  8.   

    ADO是MS的东东,对于DELPHI来说,当然是COM了,所以你调用的时候需要COM的构造函数和析构函数:
    创建ADO对像之前
      CoInitialize(nil);
    完成ADO处理后
      CoUnInitialize;或者用freeandnil(你的ADO对像名称)
      

  9.   

    重在参与:CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)
    是初始化com类库函数。
    S_OK 
    表示初始成功。
    S_FALSE 
    表示类库已经初始化了(指同样的线程模型)。并不是错误。
    RPC_E_CHANGED_MODE 
    表示这次初始化的线程模型不同了。