您的位置:首页 > 编程语言 > Delphi

Delphi使用C++库,向库中函数传递回调函数指针的问题解决

2014-07-10 10:48 337 查看
Delphi中专用的回调函数是of Object ,如果在C++的库函数中需要使用到回调函数,则不能使用of Object 方式的回调函数,而是应该使用stdcall方式的回调函数,并且该函数不能是类的实现方法,必须是单独的一个函数,这一点跟of Object的回调函数有较大差别。下面举个例子

这个是C++要用到的回调函数的形式,在Delphi声明

type
    Csample = function(plen : Integer):Integer;stdcall;

加载库函数(我用的是静态加载)
 function Csonsample( sample : Csample):Integer;stdcall;external 'Captest.dll' name 'sampleFun';     Csonsample是库函数sampleFun的别名,该函数的参数是一个回调函数指针;

下面定义一个回调函数

function theCapData(pLen : Integer):Integer;stdcall;

begin

    //************** valid check ***************************

    Result := 0;

end;

在Delphi中调用库函数并传入回调函数指针

Csonsample(theCapData);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐