转载一篇文章,启发一下:
搞完了PHP4调用JavaBean,又想去试试调用COM,开始以为很难,自己用VB6写了一个Active Dll在PHP4中调用,马上成功,比调用javabean方便多了,下面讲一下我的步骤。  下载的版本是从http://www.mm4.de/。  一:用VB6写Activex Dll  代码如下:  Option Explicit  Private MyScriptingContext As ScriptingContext  Private MyApplication As Application  Private MyRequest As Request Private MyResponse As Response  Private MyServer As Server  Private MySession As Session Public  Sub OnStartPage(PassedScriptingContext As ScriptingContext)  Set MyScriptingContext = PassedScriptingContext  Set MyApplication = MyScriptingContext.Application  Set MyRequest = MyScriptingContext.Request  Set MyResponse = MyScriptingContext.Response  Set MyServer = MyScriptingContext.Server  Set MySession = MyScriptingContext.Session  End Sub  Public Sub OnEndPage()  Set MyScriptingContext = Nothing  Set MyApplication = Nothing  Set MyRequest = Nothing  Set MyResponse = Nothing  Set MyServer = Nothing  Set MySession = Nothing  End Sub  Public Function Test_Number(num) As Variant  If num < 0 Then Get_Number_Attrib = -1  If num > 0 Then Get_Number_Attrib = 1  If num = 0 Then Get_Number_Attrib = 0  End Function  具体方法如下:新建一个VB6工程,ActiveX Dll将工程命名为P_test,类名为c_test  类的文件内容如上。  编译生成p_test.dll文件  二:注册  提示符下运行:regsvr32 p_test.dll  三:编写php文件,test.php4代码如下:  <?  $b=new COM("p_test.c_test");  $a=$b->Test_Number(-454);  echo $a;  ?>  运行php4文件将显示-1  可能遇到的问题是,编译工程时通不过,要将  Microsoft Active Server Pages Object Library  引用进来,具体实现“Project->References”找到改库,并勾上  相比之下,PHP4调用com应该比PHP4调用javabean好哦,因为毕竟是Ms系统嘛。大家也可以去自己编写调用数据库的控件,用PHP4调用,从某种程度上,和PHP调用javabean一样,可以说,实现了“隐藏源代码”。  欢迎有兴趣的朋友交流。

解决方案 »

  1.   

    uGain(uGain.org)
    我的服务器是apache,然后我直接用vc生成一个dll文件,放到php的根目录下
    然后我通过http://localhost/myapi.dll 执行dll
    但没有出现预料的执行页面,反而弹出一下载对话框询问我是否要下载该dll文件!!!!
    我的其它php程序都很正常!!请问这是怎么回事??跟php的服务器apache有关吗?或者跟php的运行模式(CGI、ISAPI)有关??谢谢兄弟!!!
      

  2.   

    楼主,你那不是叫php调用dll,而是执行dll,不过apache不知道怎么执行所以当作文件下载了
    最好不能让这些执行。不然很危险的。服务器什么时候内容没有了也不知道
    vc可以编译成cgi文件执行。具体你到cgi论坛去看下。不过也简单就是编译成控制台形式,
    首先输出html文件头就可以了。
      

  3.   

    dll只能在win32上运行啊看手册
    CXIV. W32api 函数库
      

  4.   

    楼主的这种要求只能在win32上完成
      

  5.   

    ActiveX Dll 并不是真正意义上的dll。只能在系统注册后用com函数连接
      

  6.   

    谢谢大家参与!!那就是说php执行dll时不能够做到跨平台。pity!
    :(其实我想实现这种功能,就是在php和数据库之间做一个中间层,
    由中间层执行数据库的相关操作!!这个中间层该如何实现呢???希望高手指点迷津!!! 谢谢!!
      

  7.   

    直接用php写啊
    就像adodb那样
      

  8.   

    用java也可以
    php也可以调用java的