首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

dll中的定义转换有关问题

2012-03-09 
dll中的定义转换问题又有看不懂的了,请教大家:vc中的定义如下typedefUINT(AFX_CDECL*CALLBACK_PROC)(LPVOI

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;

热点排行