php调用dll

2022-01-11  本文已影响0人  阿_贵

1. 新建vs2017项目

Visual Basic -> Windows桌面 -> 类库(.Net Framework) (用于创建VB...dll)

2. COM可见

解决方案资源管理器 -> “解决方案XXXXX项目”下面 -> 点击“XXXXX”(项目名称)

点击“属性”里面的“小扳手”(属性页)-> 应用程序

点击“程序集信息”,勾选:使程序集COM可见

3. 创建强命名签名文件并使用

sn.exe位置:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools>

sn -k d:\XXXXX.snk (强命名签名文件)

如果找不到sn命令:.\sn -k d:\XXXXX.snk

上面(属性页)-> 签名:勾选“为程序集签名” -> 选择上面文件 -> 保存

4. 注册dll,并配置到全局缓存

 regasm  D:\.....\XXXXX.dll

这个.dll的.net程序集就变成一个标准的Com组件了

regasm.exe在:C:\Windows\Microsoft.NET\Framework64\v4.0.30319

gacutil /I D:\.......\XXXXX.dll

将dll添加到全局程序集缓存中

gacutil.exe在:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools

5. 查询DLL是否已经在全局缓存

gacutil -l "ClassLibrary1"

Number of items = 1(数量为1:已经;数量为0:还未)

6. php调用dll:$David = new COM("ClassLibrary1.Class1");出现错误:

Fatal error: Uncaught Error: Class 'COM' not found in........

在php.ini里添加:extension=php_com_dotnet.dll

7. VB代码

Public Class Class1

    Public Function InitLDAP(ByVal AA As Integer, ByVal BB As Integer, ByVal Name As String)

        Dim intValue1 As Integer = AA

        Dim intValue2 As Integer = BB

        Dim Name2 As String = Name

        Return AA + BB

    End Function

End Class

8. php调用代码

php.ini配置文件里加上这一行

extension = php_com_dotnet

<?php

$i = 88;

$k = 9999;

$David = new COM("ClassLibrary1.Class1");

$p = $David ->InitLDAP($i,$k,"test44432");

print_r($p);

die();

?>

输出10087

上一篇 下一篇

猜你喜欢

热点阅读