是什么导致VB6应用程序中的“对象〜失败的方法”?

时间:2012-01-11 07:30:45

标签: vb6 opc

我正在开发一个旧的VB6应用程序,并且最近添加了西门子OPC组件。在VB6调试器中运行时我没有问题。

然后,我创建了一个部署包(包中包含的Siemens OPC dll),并在同一台PC上部署了应用程序。然后,在访问OPC对象时,我收到以下错误消息:

'对象的方法〜失败'

任何人都可以建议可能导致此问题或我可以做些什么来获取更多信息吗?

更新 我知道有关此错误消息的其他问题。令我困惑的是,使用VB调试器时没有问题。部署后出现问题 - 即使在同一台机器上也是如此。我原以为所有组件都保持注册和可用。

CODE

Public Sub InitialiseOPC(ServerIP As String, OpcServerName As String, BaseAddress As String)
    On Error GoTo ProcError
    IsInitialised = False

    Set MyOpcServer = New OPCServer
    Dim LocalServers

    LocalServers = MyOpcServer.GetOPCServers(ServerIP)
    ....

调用GetOPCServers时发生错误。这是第一次访问OPC组件。

有没有办法追踪VB目前正在做什么(例如dll加载)?

更新

我尝试将Siemens dll部署到应用程序文件夹而不是默认位置,并且不再显示此错误消息。

1 个答案:

答案 0 :(得分:4)

在后期绑定调用期间抛出异常(SEH)时会生成

Method ~ of object ~ failed。 VB6努力“#34; wrap"每次后期召唤都会发现这种意想不到的行为。

在您的情况下,很可能VC组件正在尝试加载从属DLL或COM对象并失败但不能正常处理失败。相反,它尝试在空引用上调用方法,并使用访问冲突或类似异常调用炸弹。