我有一个.net dll,我想在我的php应用程序中使用
我已经在.net应用程序上测试了dll并且它运行良好
我的c#课程:
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,但它却抓住了这个错误:
找不到入口点
我在使用vs2010 .net4
的Windows Server 2003 sp2上答案 0 :(得分:1)
.NET程序集的标准注册工具确实是regasm.exe, with /Codebase,如果你没有把它放在GAC中(但你明显地把它放在GAC中)。
你在php中使用的progid应该与你在.NET中指定的相同,所以“CryptoCs”,而不是“CryptoCs.Crypto”在这里
另外,我建议你删除所有ClassInterface和InterfaceType属性,因为最好一般使用默认值。