php 打开动态链接,php调用com组件-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"找到改庫,并勾上 。
可能你的情況會不一樣,便絕對可用。
總結
以上是生活随笔為你收集整理的php 打开动态链接,php调用com组件-dll文件(动态链接库)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子宫腺肌症不孕怎么办
- 下一篇: nginx php 大小写问题,Ngin