PHP调用自定义COM的经验总结

字体大小: 中小 标准 ->行高大小: 标准
小弟进来一直在研究PHP中调用DLL的问题,也发了不少帖子询问如:geel哥 ,给了小弟很大的帮助!在此感想geel哥。在网上查找也大多是调

用什么word,excle的。于是小弟经过2天的研究终于成功了,现在小弟将自己调用中遇到的一些问题和解决的办法发出来和大家探讨一些看有

没有可改进的地方,同时也算是抛块砖吧!
第一个问题:PHP中如何调用DLL中的函数?
答:首先查到的是 w32api_register_function 函数,需要打开php_w32api.dll可是该函数只在PHP在4.2.0 至 4.2.3中支持调用

,哎呀!我用的php是4.3.6! 
调用DLL只有使用php的COM函数了。
第二个问题:如何写COM。
答:这个问题本来不属于php的问题,但还是给大家简单介绍一下,我用的是msvs.net2003环境下的VC++。当然其他工具也行了

。只是小弟对VC熟一点而已。具体做法,新建一个项目,选择VC++项目下的alt文件夹,选择ALT项目,点确定,哦记着起名字。在“类视图

”选项中添加一个alt类,选择简单alt类就行了。配置一下属性,OK,类视图窗口中出现了你新建的类名,选择“I”开头的类名结尾的项目,

右键添加方法。然后完成你函数的具体内容就行了。然后编译OK!
第三个问题:php如何调用你的com呢?
答:首先要在windows的运行框中,运行regsvr32 c:\yourpath\yourcom.dll。需要注意的问题一定要把你用到的所有DLL文件都

放在一个目录下。注册成功后,你就可以调用了。
<?php

$mycom = new COM ("mycom.myclassname") or die ("error");//mycom.myclassname 点前面是你dll的名字,点后面是你在

com中定义的类的名字。
com_invoke($mycom,"yourfunctionname","para1","para2");//有几个参数就写几个para。
$mycom ->;Release();
?>;
试试看,有没有问题!到这里就完成了php的调用。
注意:在用php想com传参数的时候,会有点问题,在传递字符串时,你的com程序一定要是BSTR类型的,如果是CHAR*就不能成功传递!我是费

了很大周折自己试出来的哟!
希望能给大家一点帮助!也希望大家能讨论一下,我毕竟也是初学者!

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67170.html