VB6程序使用的32位dll在64位Win 7中不起作用

时间:2012-07-12 06:53:21

标签: windows dll vb6

1)32位dll放在C:\ Windows \ SysWOW64

2)使用regasm.exe注册

3)编译时,我将目标cpu设置为x86

我可以在我的vb6程序中添加引用,但是当我尝试在dll中调用该方法时,它失败了。错误消息如下:

 "Runtime Error '-2147467261' object instance not set to an instance of an object"

代码:

Set m_objCLogon = CreateObject("CommonLogon.Logon")
strResult = m_objCLogon.ValidateLogin(p_strUserID, p_strEncryptedPwd, p_strAppID)

代码非常简单,只需传递凭据即可进行验证。

任何人都知道哪个部分出了问题?

2 个答案:

答案 0 :(得分:4)

显然注册没有问题,错误消息是.NET异常消息。您的代码是对NullReferenceException的轰炸。这是一个非常常见的例外,它(几乎)总是由代码中的错误引起。

您需要调试代码。使用Project + Properties,Debug选项卡执行此操作。选择“启动外部程序”并将其设置为vb6程序或c:\ program files \ microsoft visual studio \ vb6 \ vb6.exe。然后是Debug + Exceptions,勾选CLR异常的Thrown框。按F5开始。

答案 1 :(得分:0)

如果是我,我会将DLL复制到System32目录(因为它是一个VB6 32位DLL),我会使用regsvr32 c:\ Windows \ System32 \ MyDLL.DLL。就像在任何其他32位机器上使用它一样。

相关问题