1

以前の質問で、VB5 & 6 の COM オブジェクトとして機能する C# クラスを取得しようとしていました。COM オブジェクトを VB6 アプリで動作させることはできましたが、VB5 で動作させるのに問題がありました。同じマシン。

参考までに、以前の質問はHEREです。

私の最終的な目標は、この COM オブジェクトを VB5 で動作させることですが、実行すると例外がスローされます: ランタイム エラー 80070002.Stackoverflow に関する調査では、このエラー コードが File not Found 例外であることを示しています。VB6 プログラムは VB5 プログラム (同一コード) と同じマシンで実行でき、COM DLL は適切に登録され (regasm.exe を使用)、TLB は VB5 の参照リストに表示されます。実行コードは次のとおりです。

Dim arcom As ARCOMObject.ARCOM_Class
Set arcom = New ARCOMObject.ARCOM_Class
Dim s As String
s = arcom.GetServiceResponse()
MsgBox (s)

クラスをインスタンス化する行の実行時に例外がスローされます。

私が見つけた他の場所、特に上記で作成した 2 番目の SO 参照では、ユーティリティdepends.exe を使用して、欠落している可能性のある依存関係を確認することを提案しました。残念ながら、.Net 開発マシンでも VB5 マシンでも、そのようなユーティリティを見つけることができません。とにかく、これが何かを教えてくれるかどうかはわかりませんが...

では、VB5 が見ることができないもの、VB6 が見ることができるもの、または必要としないものは何でしょう?

追加するために編集:

重要な警告-- IDE から実行中にエラーが発生したため、実行可能ファイルをビルドしたことはありませんでしたが、DependencyWalker が必要とするために最終的にショットを撮り、実行したところ、実行可能ファイル自体が正常に動作することがわかりました! 現在、DependencyWalker は、「警告: 遅延読み込み依存モジュールにエクスポート機能がないため、少なくとも 1 つのモジュールに未解決のインポートがあります」というメッセージを表示します。うわー、それはクールです、一体この文はどういう意味ですか? 笑。

とにかく、現時点で解決が必要な問題があるかどうかはわかりませんが、提案は大歓迎です!

4

2 に答える 2

2

これらのタイプの問題を解決するのに行き詰ったとき、私にとって常にうまくいくのは次のとおりです。あなたの問題は、VB5 バージョンのどこかでファイルが欠落しているため、どれを知る必要があるかということです。簡単な解決策 (WinDBG に頼らない) は、FileMon または ProcMon をスローすることです。つまり、エラーだけが表示されるようにフィルター処理します。

その後、アプリが失敗すると、どのファイルが不足していたかがわかります。

于 2011-04-29T17:56:43.653 に答える
0

これは興味深いかもしれません: 暗黙的に依存するモジュールにエクスポート機能がないため、少なくとも1つのモジュールに未解決のインポートがあります

于 2011-04-29T18:53:19.543 に答える