在dll中封装了若干窗体,FORM1,FORM2,FORM3,FORM4,问FORM1如何调用FORM2,出现提示错误:
"尚未调用CoInitialize",谢谢!!!

解决方案 »

  1.   

    在同一个DLL进程空间调用与普通的EXE调用没有区别.你是不是用了COM, 在dll中初始化的地方用
    CoInitialize(nil);
    释放的时候用
    CoUnInitialize;
    要uses ActiveX
      

  2.   

    旺仔说了,补充点。。所谓的你是不是用了COM,例如在DLL中使用了ADO,那么要注册。注册的方法可以在DLL接口部分,调用CoInitialize
      

  3.   

    是如"wudi_1982(︻┳═一) ( ) 信誉:96"所述,能举个例子吗?谢谢 .
      

  4.   

    例如我用一个DLL来完成一个数据库操作,里面使用了ADO组件,那么在我的导出函数部分,我这么写:
    procedure ShowFpManager;stdcall
    begin
      CoInitialize(nil);
      dtmd := Tdtmd.Create(nil);//这里边用到了ado
      frmfpgl := Tfrmfpgl.Create(nil);
      try
        frmfpgl.ShowModal;
      finally
        frmfpgl.Free;
        dtmd.Free;
        CoUninitialize;
      end;
    end;记得uses activex;
      

  5.   

    我终于知道了,原来要先创建数据窗,dtmd 是DataModule吧,谢谢了
      

  6.   

    dtmd 是DataModule吧是的。结贴吧。