关于DELPHI调用DLL时的回调函数有关问题
求助:关于DELPHI调用DLL时的回调函数问题
DLL是用C++编写的 要用DELPHI调用 可是其中的回调函数一直没反应啊
以上是DLL的头文件
以上是C++调用DLL时候的回调函数部分,运行正常。
以上是DELPHI 调用DLL的回调函数部分的代码,可是回调函数完全没反应啊,请问什么地方有问题啊?谢谢!
------解决方案--------------------
。。。。。我看到了string,换成PChar试试
PCALLBACK = procedure(ss:pchar;n:integer);stdcall;
procedure CallBack(ss:pchar;n:integer);stdcall;
------解决方案--------------------
试试这样
MOTO_SetCallBackFun(@callbackFun);
------解决方案--------------------
调用约定问题
------解决方案--------------------
------解决方案--------------------
zwjchina163@163.com
------解决方案--------------------
你的dll有问题。模块无法加载
------解决方案--------------------
可能与连接硬件有关。
procedure MOTO_SetNetParam(str:string; n:integer);cdecl;external'moto_srv.dll' ;
需要修改一下
procedure MOTO_SetNetParam(str:PAnsiChar; n:integer);cdecl;external'moto_srv.dll' ;
------解决方案--------------------
来学习学习
------解决方案--------------------
DLL是用C++编写的 要用DELPHI调用 可是其中的回调函数一直没反应啊
#ifndef _FSC_MOTOSRV_H_
#define _FSC_MOTOSRV_H_
#ifdef WIN32
#ifdef MOTO_SRV_EXPORTS
#define MOTOSRV_API extern "C" __declspec(dllexport)
#else
#define MOTOSRV_API __declspec(dllimport)
#endif
#define _CALL __cdecl
#endif //WIN32
typedef int bool;
typedef void (WINAPI *MOTO_Callback)(char *msg, int msglen);
//注册接到对方数据时的回调函数
MOTOSRV_API void _CALL MOTO_SetCallBackFun(MOTO_Callback cb);
以上是DLL的头文件
void __stdcall display(char *msg, int len)
{
int i;
for(i =0; i<len; ++i)
{
printf("0x%02x ",msg[i]);
}
printf("\n");
return;
}
int main(int argc, char **argv)
{
//////////////////////// 接收数据 ////////////////////////////
//设置回调函数
MOTO_SetCallBackFun(display);
//开始接收数据
MOTO_StartRecv(Port);
}
以上是C++调用DLL时候的回调函数部分,运行正常。
type
PCALLBACK = procedure(ss:string;n:integer);stdcall;
procedure CallBack(ss:string;n:integer);stdcall;
procedure MOTO_SetCallBackFun(cbf: PCALLBACK);cdecl; external 'moto_srv.dll';
implementation
procedure CallBack(ss:string;n:integer);stdcall;
begin
showmessage('11');
end;
procedure TForm1.Sendaaa();
var
callbackFun: PCALLBACK;
begin
callbackFun:= CallBack;
MOTO_SetCallBackFun(callbackFun);
MOTO_StartRecv(4004);
end;
以上是DELPHI 调用DLL的回调函数部分的代码,可是回调函数完全没反应啊,请问什么地方有问题啊?谢谢!
------解决方案--------------------
。。。。。我看到了string,换成PChar试试
PCALLBACK = procedure(ss:pchar;n:integer);stdcall;
procedure CallBack(ss:pchar;n:integer);stdcall;
------解决方案--------------------
试试这样
MOTO_SetCallBackFun(@callbackFun);
------解决方案--------------------
调用约定问题
------解决方案--------------------
尽量不要用string
------解决方案--------------------
zwjchina163@163.com
------解决方案--------------------
你的dll有问题。模块无法加载
------解决方案--------------------
可能与连接硬件有关。
procedure MOTO_SetNetParam(str:string; n:integer);cdecl;external'moto_srv.dll' ;
需要修改一下
procedure MOTO_SetNetParam(str:PAnsiChar; n:integer);cdecl;external'moto_srv.dll' ;
------解决方案--------------------
来学习学习
------解决方案--------------------