2011-10-07 30 views
2

我有一个VB6的Active DLL,我试图从C#调用。为什么我从C#应用程序调用VB6 ActiveX DLL失败,并显示“没有支持此接口”?

我使用tblimp转换并导入到2010年VS

我然后使用它实例:

AppWebActiveX.Users appWebActiveX = new appWebActiveX.Users(); 

有一个用户界面和UsersClass类时,我看在对象浏览器。

然后我打电话:

bool isExistingUser = appWebActiveX.IsExistingUser("cat"); 

bool IsExisting(string)是一个有效的方法,根据对象的浏览器。

然而,这将返回:

无法转换类型的COM对象 'AppWebActiveX.UsersClass' 到接口类型 'AppWebActiveX._Users'。 ...没有这样的接口支持...

最新的堆栈调用是System.StubHelpers.StubHelpers.GetCOMIPFromRCW。

我在Windows Server 2003 Standard Edition(x86 - 32位)上运行该应用程序,它是一个32位DLL。我正在从C#控制台应用程序调用。

有什么建议吗?

+0

您的.NET应用程序是否在64位操作系统上以64位模式运行? – vcsjones

+3

您使用一个参数调用方法,但您的签名有2个参数。除非这是一个错字,他们是不一样的方法。 – user957902

+0

对不起。这是一个错字。我现在修复了它。 – dommer

回答

1

原来我忽略了主方法中的[STAThread]属性。

相关问题