各位前辈:
    好,我在DLL里 写了个函数: 
  Readcard(var icdev:integer;cardno:integer);stdcall;export;  
  begin
   icdev:=3;
   cardno:=5;
  end;我在delphi中调用DLL里这个 Readcard(icdev,cardno) 函数的时候: 
 begin
   Readcard(icdev1,cardno1);
   showmessage(inttostr(icdev1)); 
 end;
为什么 icdev1的值不是3啊 请大哥大姐姐们指点一下,不胜感激。。

解决方案 »

  1.   

    http://blog.csdn.net/CoolSlob/archive/2006/07/31/1003558.aspx
      

  2.   

    调用时这样声明:1.静态声明:
      function Readcard(var icdev:integer;cardno:integer);stdcall;external 'YourDll.dll';2.动态声明:
    var
      DllHandle: THandle;
      Readcard: function(var icdev: Integer; cardno: Integer); stdcall;
    begin
      DllHandle := LoadLibrary('YourDll.dll');
      if DllHandle > 0 then
      try
        Readcard := GetProcAddress(DllHandle, 'Readcard'); //这里注意函数名的大小写要与动态库中一致
        if Assigned(Readcard) then
          //调用Readcard
      finally
        FreeLibrary(DllHandle);
      end;
    end;
      

  3.   

    调用时我的声明如下,是正确的啊,难道有错误吗?
    function readcardno(icdev: longint;cardno:smallint):smallint;stdcall;
    far;external 'tclreg.dll'name 'readcardno';tclreg.dll 的函数如下:
    function readcardno(icdev:integer;cardno:integer):integer;stdcall;export;是不是dll中的函数中的两个参数,根本就传不到应用程序中来啊 ,谢谢指点