DELPHI调用VC编写的DLL问题这是移动梦网的CMPPAPI.DLL中的接口函数,该函数负责接收短信息。请大家帮忙看看!
DLL中有一函数CMPPDeliver,其参数为Ntimeout;PDeliverResp;函数返回类型为int;
其中Ntimeout为整型,PDeliverResp为一结构指针。
结构体定义如下
typedef struct
{
char sMsgID[21+1];
int nMsgLevel;
char sServiceID[10+1];
int nMsgFormat;
char sSrcTermID[21+1];
int nIsReply; /* 0/1 */
int nMsgLen;
char sMsgContent[MAX_SM_LEN+1];
char sDestTermID[21+1];
char cTpPid;
char cTpUdhi;
} DeliverResp;现在DELPHI中调用该DLL中的CMPPDeliver函数
该如何调用此函数,如何定义数据结构?

解决方案 »

  1.   

    TDeliverResp = record
      sMsgID:string[22];
      nMsgLevel:longint
      sServiceID:string[11];
      nMsgFormat:longint;
      sSrcTermID:string[22];
      nIsReply:longint;
      nMsgLen:longint;
      sMsgContent:string[MAX_SM_LEN+1];
      sDestTermID:string[22];
      cTpPid:char;
      cTpUdhi:char;
    end;
    TPDeliverResp=^TDeliverResp;function Receive(Ntimeout:integer;DeliverResp:TPDeliverResp):longint;external 'CMPPAPI.DLL';
      

  2.   

    type
      Int = Integer;
      DeliverResp = record
        sMsgId: array[0..21] of Char;
        nMsgLevel: Int;
        sServiceID: array[0..10] of Char;
        nMsgFormat: Int;
        sSrcTermID: array[0..21] of Char;
        nIsReply: Int;
        nMsgLen: Int;
        sMsgContext: array[0..MAX_SM_LEN] of Char;
        sDestTermID: array[0..21] of Char;
        cTpPid: Char;
        cTpUdhi: Char;
      end;
      PDeliverResp = ^DeliverResp;
      
    function CMPPDeliver(Ntimeout: Int; _PDeliverResp: PDeliverResp): Int;
        external 'CMPPAPI.DLL';
      

  3.   

    定义的不错;呵呵;
    还有注意调用的时候是CDECEL方式;
      

  4.   

    是啊,忘了调用约定function CMPPDeliver(Ntimeout: Int; _PDeliverResp: PDeliverResp): Int; cdecl;
        external 'CMPPAPI.DLL';