我正在开发一个旧的VB6应用程序,最近添加了西门子OPC组件。在VB6调试器中运行时,我没有问题。
然后我创建了一个部署包(Siemens包含在包中),并将应用程序部署在同一台PC上。然后在访问OPC对象时得到以下错误消息:
“对象的方法~失败”
有人能建议是什么导致了这件事或者我能做些什么来获得更多的信息吗?
更新我知道围绕这条错误消息的其他问题。让我困惑的是,在使用VB调试器时没有问题。这些问题发生在部署后--甚至在同一台机器上。我原以为所有的组件都是注册和可用的。
码
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部署到应用程序文件夹,而不是默认位置,此错误消息将不再出现。
发布于 2012-01-11 10:22:43
在延迟绑定调用期间抛出异常(SEH)时会生成Method ~ of object ~ failed
。VB6会努力“包装”每个延迟绑定的调用,以捕捉这种意外的行为。
在您的情况下,VC组件很可能正在尝试加载依赖的DLL或COM对象,并且失败了,但没有很好地处理故障。相反,它尝试调用空引用上的方法,并使用访问冲突或类似的异常进行炸弹处理。
https://stackoverflow.com/questions/8815662
复制相似问题