一个c写的dll其中一个函数SMGPDeliver(const int nTimeoutIn, DeliverResp *pDeliverResp);
其中 DeliverResp定义如下
#ifdef SMGP_API_EXPORTS
/*DLL VERSION*/
typedef struct
{
unsigned int nIsReport;
unsigned int nMsgFormat;
unsigned int nMsgLength;
char sMsgID[10+1];
char sRecvTime[14+1];
char sSrcTermID[21+1];
char sDestTermID[21+1];
char sMsgContent[252+1];
}DeliverResp;#else
/*NOT DLL VERSION*/
typedef struct
{
char sMsgID[10+1];
unsigned int nIsReport;
unsigned int nMsgFormat;
char sRecvTime[14+1];
char sSrcTermID[21+1];
char sDestTermID[21+1];
unsigned int nMsgLength;
char sMsgContent[252+1];
}DeliverResp;
我在delphi中定义如下
{+//DLL VERSION*/ }
type
  DeliverResp = record
    nIsReport: word;
    nMsgFormat: word;
    nMsgLength: word;
    sMsgID: Array[0..10] of Char;
    sRecvTime: Array[0..14] of Char;
    sSrcTermID: Array[0..21] of Char;
    sDestTermID: Array[0..21] of Char;
    sMsgContent: Array[0..252] of Char;
  end {DeliverResp};在使用该函数的时候,语法检测总说 Types of actual and formal var parameters must be identical我该怎么调用这个函数?

解决方案 »

  1.   

    我在delphi中定义如下
    {+//DLL VERSION*/ }
    type
      gDeliverResp= DeliverResp;
      DeliverResp = record
        nIsReport: word;
        nMsgFormat: word;
        nMsgLength: word;
        sMsgID: Array[0..10] of Char;
        sRecvTime: Array[0..14] of Char;
        sSrcTermID: Array[0..21] of Char;
        sDestTermID: Array[0..21] of Char;
        sMsgContent: Array[0..252] of Char;
      end {DeliverResp};function SMGPDeliver(const nTimeoutIn: Integer;
                         var pDeliverResp: gDeliverResp): Integer ; stdcall ;在使用该函数的时候,语法检测总说 Types of actual and formal var parameters must be identical我该怎么调用这个函数?
      

  2.   

    可能是传给  SMGPDeliver 函数 的参数, 数据类型不匹配 , 能否把调用过程写来一见?
      

  3.   

    终于知道为什么了,在delphi中函数定义
    function SMGPDeliver(const nTimeoutIn: Integer;
                         var pDeliverResp: gDeliverResp): Integer ; stdcall ;
    其中gDeliverResp是结构指针
    在调用时:
    var 
    gd:gDeliverResp;
    i:integer;i:=SMGPDeliver(1,@gd);//加了@ 由于函数定义时有 var 所以出错,如果定义时 没有var则语法检测通过;搞不懂函数定义时有var和没有var的区别?根据上面c的类型定义函数定义,我的转为delphi有没有错?该怎么定义? 
    另外我要取结构中各项的值,怎么取啊?