下面是我写的dll 都编译成功 注: MC_TLCYGLXT  是我程序的数据模块窗口单元 
library pubfunc;
uses
  SysUtils,ADODB,RzTreeVw,ComCtrls,Classes,
  MC_TLCYGLXT in 'MC_TLCYGLXT.pas';
{$R *.res}
procedure Open_TreeNode1(table_name,field,field1,all_type:pchar;tv:TRZtreeview); stdcall;
 var
   adotmp: TadoQuery;
   parentNode,curNode:TTreeNode;
  begin
     adotmp:=nil;
     adotmp:=Tadoquery.Create(adotmp);
     adotmp.Connection:=TLCYGLXT.ADOconn ;
     tv.Items.Clear ;
     parentNode:=tv.Items.AddChild(nil,all_type);
     parentNode.ImageIndex:=0;
     tv.Items.BeginUpdate ;
     with adotmp do
          begin
            close;
            sql.Clear ;
            sql.Text:='select '+field+' from '+table_name+' order by '+field1+' desc';
            open;
            first ;
            while not eof do
              begin
                curNode:=tv.Items.AddChildFirst(parentNode,trim(FieldByName(field).AsString));
                curNode.ImageIndex:=1;
                curNode.SelectedIndex:=1;
               next;
              end;
          end;
 tv.Items.EndUpdate ;
 parentNode.Expanded:=true;
end;
exports Open_TreeNode1;
begin
end.下面是我在程序里的静态调用 运行程序时就出现地址错误! 
procedure Open_TreeNode1(table_name,field,field1,all_type:pchar;tv:TRZtreeview); stdcall external 'pubfunc.dll';
procedure TSPInfo_manage.BitBtn1Click(Sender: TObject);
 begin
  Open_TreeNode1('sp_type','type_name','type_id','商品种类',treeview)
end;

解决方案 »

  1.   

    dll路径有没有放错?用绝对路径试试,要不就要把dll放进程序文件夹
      

  2.   

    路径是没有问题的 dll我是放在当前执行程序的文件夹里的 如果我在dll库写另一个函数调用 就可以。 
    function fxsum(a,b:double):string;stdcall;
     begin
      result:=floattostr(a+b);
     end;
      

  3.   

    那估计是你的函数有问题了
        adotmp:=nil; 
        adotmp:=Tadoquery.Create(adotmp); 
    改为adotmp:=Tadoquery.Create(nil);试试 
      

  4.   

     MC_TLCYGLXT  这个单元都没看到你有初始化他啊 你这个是一个DataModule吗,如果是要初始化他,要不然访问这上面的对像一下就内存地址出错了 MC_TLCYGLXT  := TMC_TLCYGLXT.Create;
      

  5.   

    是DataModule模块 可是我引用楼主的创建MC_TLCYGLXT:= TMC_TLCYGLXT.Create; 不能编译 提示:
    [Error] pubfunc.dpr(17): '.' expected but ':=' found
    [Error] pubfunc.dpr(17): Missing operator or semicolon
      

  6.   

    TLCYGLXT:=TTLCYGLXT.Create(nil); 我这样加了 可是还是有错 调用出现地址错误
      

  7.   

    谢谢 各位 已解决 要加TLCYGLXT:=TTLCYGLXT.Create(nil);