在PHP中使用.net DLL作为.com失败
本文关键字:DLL 作为 com 失败 net PHP | 更新日期: 2023-09-27 18:12:45
我有一个。net dll,我想在我的php应用程序
我已经在。net应用程序上测试了dll,它工作得很好
my c# class:
namespace CryptoCs
{
[Guid("15D16831-D6BE-43C4-AB4F-F0BAA35987DB")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("CryptoCs")]
[ComVisible(true)]
public class Crypto : iCryptoCs
{
public Crypto()
{
}
public bool Login(string username, string password)
{
// some code
}
}
[Guid("5BDBB53A-571A-4EC7-B37E-A4D2A6A54DEB")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[ComVisible(true)]
public interface iCryptoCs
{
[DispId(1)]
bool Login(string username, string password);
}
}
我的使用代码是:
$crypto = new COM('CryptoCs.Crypto');
此页给出这个错误:
创建COM对象失败
我尝试使用gacutil.exe注册dll,结果是:
程序集已成功添加到缓存
但是错误没有修复
我尝试了regasm.exe,结果是:
注册成功的类型
错误仍然是相同的
我尝试了REGSVR32.exe,但它给了我这个错误:
找不到入口
我在windows server 2003 sp2使用vs2010 .net
. net程序集的标准注册工具确实是regasm.exe,如果你不把它放在GAC中(但你显然把它放在GAC中),则使用/Codebase。
你在php中使用的progid应该与你在。net中指定的相同,所以"CryptoCs",而不是"CryptoCs"。加密"
另外,我建议您删除所有ClassInterface和InterfaceType属性,因为通常使用默认值会更好。