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)
代码非常简单,只需传递凭据即可进行验证。
任何人都知道哪个部分出了问题?
答案 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位机器上使用它一样。