美文网首页
php调用dll

php调用dll

作者: 阿_贵 | 来源:发表于2022-01-11 12:05 被阅读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

    相关文章

      网友评论

          本文标题:php调用dll

          本文链接:https://www.haomeiwen.com/subject/nyebcrtx.html