1

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)

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

有谁知道哪一部分出了问题?

4

2 回答 2

4

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

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

于 2012-07-12T08:29:33.277 回答
0

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

于 2013-09-18T13:32:41.330 回答