一个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我该怎么调用这个函数?
其中 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我该怎么调用这个函数?
解决方案 »
- 怎样给TMainMenu添加mousemove事件?
- 请教!!关于播放背景音乐,CPU占用问题!!
- 如何用ComObj取得一个Excel文件的行数和列数?
- 在ACCESS库,SQL语句执行特慢,不知高手有没有更高效率SQL语?
- 我用windows.beep(100,200)为什么编译器告诉我[Error] Undeclared identifier: 'windows'
- 怎样进行MD5加密,在线等待...
- 请问如何打印from?在线等待.up有分,急盼回复!
- 关于变量错误,谢谢,急,马上给分,我就在,急,谢谢,
- 怎样把一个包含TADOQuery的窗体封装成DLL
- 求助 delphi ADO组件的 CursorLocation属性设置为 clUseServer 用法
- delphi7 安装完成后,如何注册?请大家帮忙!
- 关于更新数据库的代码和名称的问题
{+//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我该怎么调用这个函数?
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有没有错?该怎么定义?
另外我要取结构中各项的值,怎么取啊?