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
网友评论