ADO是ActiveX调用,所以要初始化
CoInitialize(nil); 
还要释放
CoUnInitialize;

解决方案 »

  1.   

    你在dll的调用模块之前都加上sharemem的引用试试看
      

  2.   

    library DBDll;
    uses
        ShareMem, ...unit DBUnit;interfaceuses
        ShareMem, ...
      

  3.   

    就只需要将ShareMem放在第一的位置?不需要其他的动作?
      

  4.   

    ly_liuyang(Liu Yang):请问如何初始化?在哪里进行初始化?这两个函数包含在什么文件中?
    谢谢!
      

  5.   

    对,我碰到过类似的问题,我传递的是一个TADOConnection
      

  6.   

    daniel007(添):好像还是不行啊。
      

  7.   

    呵呵,你这样试试看:
    ********************************************************************
      library DBDll;
    uses
      SysUtils,
      Classes,
      Activex,   //注意啊
      DBUnit in 'DBUnit.pas';exports
      SQLAction;{$R *.res}begin
       CoInitialize(nil); ////注意啊
    end.
    ********************************************************************
    如果不行,请进快告诉我!!
      

  8.   

    调用程序中不要 LoadLibrary吗?
      

  9.   

    To Liusp(菜鸟无名):LoadLibrary是动态的,我现在是静态的。
    To fwjingling(蓝精灵):application-defined exception(code 0xC0000028) at 0x77fb1716 
      

  10.   

    我帮你查了一下,报错的原因有两个:
    *******************************************************************
    1. sqlString的值没有传对,再DLL中,传递参数时,参数的类型最好不要用 
       String,改为PChar;
    2. 传递一个TADOQuery对象好像不行,再Close时会报访问内存错误!
    *******************************************************************
    我会再帮你看看的!!
      

  11.   

    在DLL工程里,设定Run\Parameters下面的Host Application为调用此DLL的主程序(最好将调用此DLL的主程序拷贝到DLL工程所在的目录下),然后按下F7进行但不调试,即可发现出错的地方!!