1

私は古い VB6 アプリに取り組んでおり、最近 Siemens OPC コンポーネントを追加しました。VB6 デバッガーで実行する場合、問題はありません。

次に、展開パッケージ (パッケージに含まれる Siemens OPC dll) を作成し、同じ 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 をデフォルトの場所ではなくアプリケーション フォルダに配置しようとしたところ、このエラー メッセージは表示されなくなりました。

4

1 に答える 1

4

Method ~ of object ~ failed遅延バインド呼び出し中に例外 (SEH) がスローされると生成されます。VB6 は、遅延バインドされた各呼び出しを「ラップ」して、このような予期しない動作をキャッチしようとします。

あなたの場合、ほとんどの場合、VC コンポーネントは依存する DLL または COM オブジェクトを読み込もうとして失敗しますが、失敗を適切に処理しません。代わりに、空の参照でメソッドを呼び出そうとし、アクセス違反または同様の例外で爆破します。

于 2012-01-11T10:22:43.353 に答える