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);
这个是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);
相关文章推荐
- 实例解析使用指针作为函数参数传递需要注意的问题
- QT信号槽的六个优点(虽然直接调用函数也可解决问题,但要在具体的函数中传递指针,多对一和解除关系也够麻烦的)
- 使用Server.UrlEncode解决传递request中文乱码的问题
- 使用p3p解决iframe中跨域传递cookie的问题
- asp.net c#的传参中经常使用到中文参数的处理,下面的函数可以解决中文参数的问题
- 解决问题:vs 使用命令行参数调试时出现"当前项目设置指定将使用特定的安全权限对该项目进行调试.在此模式下,命令行参数将不会传递给可执行文件."
- (2356)Delphi 2010下使用sqlitesimpledelphi连接SQLite数据库及中文乱码问题的解决
- 抛开Cookie使用SESSION-PHP中SESSION不能跨页传递问题的解决办法(转载)
- 使用asx3m与xstream配合解决flex与java利用httpservice传递xml数据问题
- 函数参数的传递问题(指针的指针)(转)
- 指针数组作为函数参数的使用问题
- 用指针传递函数参数的问题
- delphi dll及函数指针的使用
- 解决使用AJax往DropDownList中动态添加数据时发生,回发或回调参数无效 的问题
- Devexpress V40 在Delphi2009中 DBGrid 使用Search功能时文本选择从右至左问题解决
- 关于Delphi2010使用Indy发送邮件乱码问题的解决
- 函数参数的传递问题(一级指针和二级指针)
- 解决使用VC运行时库函数wprintf和wcount显示中文不正确的问题
- Delphi中使用@取函数地址的问题
- c语言 函数 用指针传递参数 问题