dll中的定义转换问题
又有看不懂的了,请教大家:
vc中的定义如下
typedef UINT(AFX_CDECL * CALLBACK_PROC)(LPVOID);
……
typedef int(WINAPI *MYFUNC15)(int,CALLBACK_PROC,LPVOID);
……
MYFUNC15 MV_SetPreviewCallback;
我现在就不知道怎么翻译这个MV_SetPreviewCallback;
请教大家,谢谢先!
人家公司给的例子如下:
type
TCallBackFun = function(pParm:PByte):DWORD;
function MV_SetPreviewCallback(CurrentNumber:integer; pFun:TCallBackFun; pParam:PByte):integer; stdcall; external DllName;
应该是有问题,否则我运行怎么不好用呢?
[解决办法]
vc中的定义如下
//--------------
函数指针
一个函数在编译时被分配一个入口地址,将这个入口地址称为函数的指针,可
以用一个指针变量指向该函数指针,然后通过该变量来调用函数。
有关说明:
1、函数指针的声明格式:
函数返回值类型(*指针变量名)(参数类型列表)
或者是:
typedef 函数返回值类型 (*指针变量名)(参数类型列表)
2、一个函数指针只能指向一种类型的函数,即具有相同的返回值和相同的参
数的函数
//------------------------------
delphi:
type
TCallBackFun = function(pParm:PByte):DWORD;
typedef UINT(AFX_CDECL * CALLBACK_PROC)(LPVOID);
delphi:
type
CALLBACK_PROC=function (var p):cardinal;cdecl;
……
typedef int(WINAPI *MYFUNC15)(int,CALLBACK_PROC,LPVOID);
type
MYFUNC15=function(param1:integer;param2:CALLBACK_PROC;var param3):integer;stdcall;
……
[解决办法]
C++:
typedef UINT(AFX_CDECL * CALLBACK_PROC)(LPVOID);
Delphi:
type
CALLBACK_PROC= function(pParm:Pointer{参数是一个无类型指针}):Cardinal;Cdecl;//由调用者清除栈;
C++:
typedef int(WINAPI *MYFUNC15)(int,CALLBACK_PROC,LPVOID);
Delphi:
type
MYFUNC15=function (intParam:integer;CallBackProc:CALLBACK_PROC;pParam:Pointer):integer;stdcall;