当前位置:   article > 正文

php 打开动态链接,php调用com组件-dll文件(动态链接库)

win10 php 加载动态库dll

什么是COM?

COM(Component

Object Model)组件对象模型,是一种跨应用和语言共享二进制代码的方法。是位于DCE

RPC上部的对象指向层(关联服务)定义公共的调用协定以允许用不同语言编写的代码调用,并允许其它语言代码进行交互操作(前题是代码是COM明白的),COM可以作为DLL被本机程序载入也可以通过DCOM被远程进程调用。

准备工作

比如我作了一个COM组件,新建一个VB6工程,ActiveX Dll将工程命名为P_test,类名为c_test

,类的文件内容如下:

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

编译生成p_test.dll文件

第一步,做为一个COM组件,这个DLL要被系统识别就要先到系统来报到

regsvr32

[路径]\[组件文件名]

regsvr32

C:\WINDOWS\system32\p_test.dll 放在系统文件夹system32下不容易出现权限问题

这时候这个文件就不能移动位置了,系统会在用到它时到这个目录来找,如果改目录就得先删除注册再重新注册

regsvr32 /u

[路径]\[组件文件名]

系统会显示窗口表示成功,大意是 组件Dllregister成功或是Dllunregister成功

第二步就可以直接调用它了

<?

$b=new COM("p_test.c_test"); //一般前边是它的主文件名后边是它的类名从注册表里找这个文件可以找到

这样就生成了一个叫b的对象,我们就可以用它的属性和方法来操作了

$a=$b->Test_Number(-454);

echo $a;

?>

可能遇到的问题是,编译工程时通不过,要将

Microsoft Active Server Pages Object

Library 引用进来,具体实现"Project->References"找到改库,并勾上 。

可能你的情况会不一样,便绝对可用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/50962
推荐阅读
相关标签
  

闽ICP备14008679号