现在有一个DLL中的函数是:int  ReadRecord1(int Address,Word RecNumber,Word *pEventNO, BYTE *pCardID,SYSTEMTIME &EventTime);我现在在Delphi中定义了这个函数:function ReadRecord1(Address: integer; RecNumber:Word;pEventNO:pWord;                         pCardID:pchar ;EventTime:SYSTEMTIME):integer;stdcall;external 'CVIOAccessAPI.dll';
但是在编译的时候会报错:[Error] UIOAccess.pas(134): Undeclared identifier: 'SYSTEMTIME',请问这是怎么回事啊,该如何解决?SYSTEMTIME 的结构是这样的:
typedef struct _SYSTEMTIME { 
    WORD wYear; 
    WORD wMonth; 
    WORD wDayOfWeek; 
    WORD wDay; 
    WORD wHour; 
    WORD wMinute; 
    WORD wSecond; 
    WORD wMilliseconds; 
} SYSTEMTIME;

解决方案 »

  1.   

    >>在编译的时候会报错:[Error] UIOAccess.pas(134): Undeclared identifier: 'SYSTEMTIME',这是delphi中没有SYSTEMTIME这个数据类型,那就自己定义一个
      

  2.   

    可以这样声明
    type
    PSYSTEMTIME =^TSYSTEMTIME ;
    TSYSTEMTIME =record
    wYear :word; 
    wMonth:word;
    wDayOfWeek:word;
    wDay:word;
    wHour:word;
    wMinute:word;
    wSecond:word;
    wMilliseconds:word;
    end;
    然后把上面的这结构定义,放在下面函数声明的前边function ReadRecord1(Address: integer; RecNumber:Word;pEventNO:pWord; pCardID:pchar ;EventTime:SYSTEMTIME):integer;stdcall;external 'CVIOAccessAPI.dll';
      

  3.   

    你的DLL是VC编写的吧,,
    有个地方需要注意的是,你delphi中,声明为stdcall,而vc中没有声明为WINAPI,这样是会有错的.这是常见的问题.