小弟进来一直在研究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*就不能成功传递!我是费
了很大周折自己试出来的哟!
希望能给大家一点帮助!也希望大家能讨论一下,我毕竟也是初学者!
longnetpro 回复于:2004-07-13 13:50:06
不过我总觉得PHP嵌入COM还不如嵌入JAVA。
zhhlv 回复于:2004-07-14 20:08:31
可能大家都不使用php调用com来实现某些功能!我还是觉得有挺有用的!大家还是给点意见吧?
jhsea3do 回复于:2004-07-14 22:27:46
我也觉得,com只能在win服务器上使用,而java对服务器平台要求没有那么严格。
只要java可以做到,那就尽量使用java。
不过做做excle之类的东西,还是用com算了~
不知道又没有纯java的类库来生成MSoffice文档的
jhsea3do 回复于:2004-07-14 22:39:53
刚才去看了一下google,
原来 [url=http://officewriter.softartisans.com/officewriter-240.aspx]OfficeWriter 和 [url=http://jakarta.apache.org/poi/]POI 这两个纯java得东东可以生成MSoffice文档, 前者需要收费并且功能强大,后者是jakarta的子项目而且免费!
紫月亮 回复于:2004-07-14 22:57:12
顶一下。。。
zhhlv 回复于:2004-07-18 15:14:58
我觉得很多地方都在使用ms的产品,所以我渐渐的开始使用ms的一些东东。我没用过java听说很难学,各位大虾,可不可以推荐一两本好书,我了解一下就可以了,不要特深的那种。
perryhg 回复于:2004-07-21 07:23:34
渐渐的开始使用ms的一些东东,那么你本来用什么的呢?
zhhlv 回复于:2004-07-21 08:35:01
用 linuix,要不咋找到了chinaunix 了,主要做计费主机的维护的,用的是hp unix.
|