C++描述:
BOOL ReadCard(char * room_name, char * checkin_date, char * checkout_date, long * card_no)Delphi描述:
function ReadCard(room_no, start_date, end_date:PChar; var card_no: Cardinal):Boolean;stdcall; external ...实际Delphi调用时:
function ReadCard(room_no, start_date, end_date:PChar; var card_no: Cardinal):Boolean;stdcall; external ...
function ReadCard(room_no, start_date, end_date:PChar; card_no: Cardinal):Boolean;stdcall; external ...这些都不行,把Cardinal换成Integer,LongInt也试过,去掉和加上Var都试过,都不行,哪位帮忙解决下,十分感谢。

解决方案 »

  1.   

    function ReadCard(room_no, start_date, end_date:PChar; card_no: PLongint):BOOL;stdcall;
    确定是stdcall;吗,换cdecl试试看
      

  2.   


    应该是stdcall,程序不止这一个函数,别的再一个单元的函数都是stdcall调用
      

  3.   

    试试Stdcall,如果不行试试Cdcel
      

  4.   


    补充,Delphi第一种方式是对方提供的,指定是stdcall,还有下面是VB的描述:
    Declare  Function ReadCard  Lib “mbt2005.dll” (
    ByRef room_no as String,
    ByRef start_date as String,
    ByRef expire_date as String,
    ByRef card_no as Long)
    as Boolean
    我会试试一楼的说法,是在别人电脑上,目前还不能试
      

  5.   

    声明有问题:
    C++描述:
    BOOL ReadCard(char * room_name, char * checkin_date, char * checkout_date, long * card_no)Delphi中改成如下:function ReadCard(room_no, start_date, end_date:PChar; card_no: PInteger):Boolean;stdcall; external ...调用如下:
    var
    room_no, start_date, end_date:array [0..128] of Char;
    card_no:Integer;ReadCard(room_no, start_date, end_date,@card_no);