读书人

dll中的定义转换有关问题

发布时间: 2012-03-09 21:42:54 作者: rapoo

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;

读书人网 >.NET

热点推荐