VC++代码如下:
typedef struct{
BYTE m_bRemoteChannel;
BYTE m_bSendMode;
BYTE m_bRight;
char *m_sIPAddress;
char *m_sUserName;
char *m_sUserPassword;
BOOL m_bUserCheck;
DISPLAY_PARA displaypara;
}CLIENT_CARDINFO, *PCLIENT_CARDINFO;CPLAYER_API LONG __stdcall MP4_ClientStart_Card(PCLIENT_CARDINFO pClientinfo,long nChannelNum,void(CALLBACK *ReadDataCallBack)(DWORD nPort,UCHAR *pPacketBuffer,DWORD nPacketSize));void CClientdemoDlg::OnButton1()
{
CLIENT_CARDINFO aa5;
.
.
MP4_ClientStart_Card(&aa5,0,NULL);
.
.
}VC调用成功的,我写成delphi后调用不成功,大家帮我看看哪里有问题
TCLIENT_CARDINFO=record
m_bRemoteChannel:byte;
m_bSendMode:TConnectMode;
m_bRight:byte;
m_sIPAddress:pchar;
m_sUserName:pchar;
m_sUserPassword:pchar;
m_bUserCheck:boolean;
displaypara:tDISPLAY_PARA;
end;
PCLIENT_CARDINFO=^TCLIENT_CARDINFO;function MP4_ClientStart_Card(pclientinfo:pclient_cardinfo;nChannelNum:longint;ReadDataCallBack:TReadDataCallBack):longint;stdcall;//这里有问题
begin
Result:=-1;
if Init_HikNet<>1 then
exit;
if not Assigned(VMP4_ClientStart_Card) then
@VMP4_ClientStart_Card:=GetProcAddress(HIKDecodeDLL,'MP4_ClientStart_Card');
if @VMP4_ClientStart_Card<>nil then
Result:=VMP4_ClientStart_Card(pClientinfo,nChannelNum,ReadDataCallBack);
end;调用不成功的
procedure TForm1.Button1Click(Sender: TObject);
var
aa5:tclient_cardinfo;
begin
.
.
MP4_ClientStart_Card(@aa5,1,null);
.
.
end;
出错信息为
[Error] Unit1.pas(76): Incompatible types: 'Calling conventions differ'
大家帮我看看是什么原因啊,求求高手指点一二了
typedef struct{
BYTE m_bRemoteChannel;
BYTE m_bSendMode;
BYTE m_bRight;
char *m_sIPAddress;
char *m_sUserName;
char *m_sUserPassword;
BOOL m_bUserCheck;
DISPLAY_PARA displaypara;
}CLIENT_CARDINFO, *PCLIENT_CARDINFO;CPLAYER_API LONG __stdcall MP4_ClientStart_Card(PCLIENT_CARDINFO pClientinfo,long nChannelNum,void(CALLBACK *ReadDataCallBack)(DWORD nPort,UCHAR *pPacketBuffer,DWORD nPacketSize));void CClientdemoDlg::OnButton1()
{
CLIENT_CARDINFO aa5;
.
.
MP4_ClientStart_Card(&aa5,0,NULL);
.
.
}VC调用成功的,我写成delphi后调用不成功,大家帮我看看哪里有问题
TCLIENT_CARDINFO=record
m_bRemoteChannel:byte;
m_bSendMode:TConnectMode;
m_bRight:byte;
m_sIPAddress:pchar;
m_sUserName:pchar;
m_sUserPassword:pchar;
m_bUserCheck:boolean;
displaypara:tDISPLAY_PARA;
end;
PCLIENT_CARDINFO=^TCLIENT_CARDINFO;function MP4_ClientStart_Card(pclientinfo:pclient_cardinfo;nChannelNum:longint;ReadDataCallBack:TReadDataCallBack):longint;stdcall;//这里有问题
begin
Result:=-1;
if Init_HikNet<>1 then
exit;
if not Assigned(VMP4_ClientStart_Card) then
@VMP4_ClientStart_Card:=GetProcAddress(HIKDecodeDLL,'MP4_ClientStart_Card');
if @VMP4_ClientStart_Card<>nil then
Result:=VMP4_ClientStart_Card(pClientinfo,nChannelNum,ReadDataCallBack);
end;调用不成功的
procedure TForm1.Button1Click(Sender: TObject);
var
aa5:tclient_cardinfo;
begin
.
.
MP4_ClientStart_Card(@aa5,1,null);
.
.
end;
出错信息为
[Error] Unit1.pas(76): Incompatible types: 'Calling conventions differ'
大家帮我看看是什么原因啊,求求高手指点一二了
解决方案 »
- MFC SetTimer的问题
- 向外部程序的ListView控件发送LVM_GETITEMTEXT
- TCP协议是用单线程还是多线程实现的?
- 在CView里显示ICON图片,出错!!!????
- 在c++中 void fun(char a)与void fun(char *a)不能区分吗?
- CriticalSection一问,关于它的成员变量
- 给大家介绍一个好的网站(不是广告)
- 在用winzard生成的多文档应用程序中,如何用我自己加的菜单项而不通过file-new创建一个新的子窗口?
- 关于文档类的几个地方不是很理解
- VC 2008 不能调试了~
- 啊, 十五年的C语言经历,也会遇到如此问题,请大家看看.怎么啦???
- [兼职]高薪请一位棋牌游戏平台编程/开发技术员
在delphi中你要对ReadDataCallBack这个函数指针说明压栈的方式