PHP调用C写的DLL如何实现回调函数?

springcyq 2013-12-18 05:38:30
PHP调用C写的DLL如何实现回调函数?

C写的DLL方法:
int C_DLL_Function(int type, Callback callback_func);

callback_func定义:
typedef void (*callback_func) (int age);


我使用的方法:
$dw = new COM("DynamicWrapper") or die("创建COM失败");
$dw->Register("C_DLL.dll", "C_DLL_Function", "i=lp", "f=s","r=l");
$type = 1;
$ch = $dw->C_DLL_Function($type, ???);
问题1:???Callback这里如何写?PHP函数应该怎么定义?

"i=lp":l是int type的类型,我很确定。但是问题2:p是Callback的类型吗?应该写什么字母来表示?

请大家帮忙,谢谢!

如果有正确答案,必定加分,回帖帮顶者都能得分。
如果没有答案,回帖帮顶者都能得分。
...全文
241 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2013-12-20
  • 打赏
  • 举报
回复
那天找个windows环境测试一下,不过你也得给出测试代码吧?
springcyq 2013-12-20
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
dynwrapx 是用于脚本语言调用 dll 的,你要的并不是这个
但是这个确实可以在PHP中实现调用C写的DLL内部函数啊,一个十个函数,我已经用dynwrapx实现了九个了,就差回调函数的这个没弄好。PHP不也是脚本语言吗?
springcyq 2013-12-19
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
可以吗?不可以的! php 写的函数需要php解析器解析,既然你不可能在 dll 中启动一个 php,那么就不可能执行php函数
应该可以的。 C写的DLL中回调函数,是指,引用PHP中定义的函数的地址,把一些返回的参数传给这个PHP函数,让PHP函数来执行。 PHP函数始终都在PHP自己的环境里运行,只不过它的参数不是来自PHP内部的传值,而是来至调用的C写的DLL的返回值。
xuzuning 2013-12-19
  • 打赏
  • 举报
回复
dynwrapx 是用于脚本语言调用 dll 的,你要的并不是这个
springcyq 2013-12-19
  • 打赏
  • 举报
回复
看到一个网页,里面有关于注册回调函数的说明,可惜例子是JScript和VBScript的,请问有人能帮忙翻译成PHP的语言吗?感谢! http://bbs.mjtd.com/plugin.php?id=laoyang_wailianx&url=http://www.script-coding.com%2Fdynwrapx_eng.html 中的 RegisterCallback method 解释
xuzuning 2013-12-18
  • 打赏
  • 举报
回复
可以吗?不可以的! php 写的函数需要php解析器解析,既然你不可能在 dll 中启动一个 php,那么就不可能执行php函数

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧