我要调用VC++写的一个DLL的函数,对应的Delphi应该怎样写
DWORD PASCAL ReadCard(HANDLE hCom,BYTE DevNo,BYTE Addr,LPSTR pInfo,LPDWORD pCardSN),最好我要取得pInfo和pCardSN的返回值,各位高手帮帮忙啊

解决方案 »

  1.   

    我见dll说明pInfo和pCardSN是有返回值的啊
      

  2.   

    那就是被改写了,调用完dll,直接访问你传递的那两个参数就行了
      

  3.   

    可是返回的值不对啊,在delphi里应该怎样调用啊
      

  4.   

    ReadCard(hCom:THandle,DevNo:BYTE,Addr:BYTE,pInfo:PChar,pCardSN:PDWORD)
      

  5.   


    //  DWORD PASCAL ReadCard(HANDLE hCom,BYTE DevNo,BYTE Addr,LPSTR pInfo,LPDWORD pCardSN);
    type
      TReadCard=function(hCom:THandle;DevNo,Addr:Byte;pInfo:PChar;pCardSN:PLongWord):LongWord; stdcall;var
      LibHandle:THandle;
      FunReadCard:TReadCard;
      lResult:LongWord;
      Info:string;
      CardSN:LongWord;
    begin
      LibHandle:=LoadLibrary('Dll文件完整名');
      if LibHandle<>0 then
      begin
        FunReadCard:=TReadCard(GetProcAddress(LibHandle,'ReadCard'));
        if Assigned(FunReadCard) then
        lResult:=FunReadCard(0,0,0,PChar(Info),@CardSN);
        //Process the Result and Paraments
        FreeLibrary(LibHandle);
      end;
    end;
      

  6.   

    用vb测试
    Public Declare Function ReadCard Lib "JSComm" (ByVal hdc As Long,ByVal DevNo As Long,ByVal Addr As Long,ByVal Info As String,ByRef CardSN As Long) As Long
    测试有可以,为什么Delphi不得呢