5

マネージ C++ を使用して dll を作成しました。現在、C# から使用しようとしています。オブジェクトをプロジェクト参照に追加しました。オブジェクト ブラウザは dll 内のオブジェクトを正しく表示し、オブジェクト ブラウザ内の dll へのパスは実際のパスに対応します。

ただし、C# プログラムを実行すると、次のように表示されます。

未処理の例外: System.IO.FileNotFoundException: 指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E)

他に何をしなければならないか考えていますか?

ありがとう。

4

4 に答える 4

6

マネージ C++ アセンブリによる他のアセンブリまたは dll の参照が欠落していると思います。

于 2009-02-02T16:02:49.717 に答える
0

C++ アセンブリが C# プログラムと同じフォルダーに存在することを確認します。'Copy Local' プロパティが true に設定されている場合 (C# アプリの c++ dll への参照で)、自動的にコピーされます。

C++ dll がそこにある場合、最も可能性の高い問題は、C++ dll が、見つからない別の管理されていない dll に依存していることです (つまり、c# は、管理されていない参照について認識していないため、これらをアプリ フォルダーにコピーしません)。C++ dll でDependencyWalkerを使用して、不足している依存関係を確認できます。

もう 1 つの考えられる原因は、MSVC ランタイム dll の問題である可能性があります。DependencyWalker が、MSVCR*.dll、MSVCP*.dll などのファイルが見つからないと文句を言うかどうかを確認します。

于 2011-08-17T12:08:04.503 に答える
0

マネージ C++ アセンブリには、アンマネージ dll を含む他の依存関係がありますか? 参照されているアセンブリが依存関係の読み込みに失敗した場合、実行時にこのエラーが表示されます。

于 2009-02-02T16:04:45.670 に答える
0

VS がインストールされていないマシンでアプリケーションをリリースで実行していますか?

ここで同様の問題に遭遇したため、私は尋ねるだけです: Mixed Mode Library and CRT Dependencies - HELP

私の答えまで下にスクロールすると、私が何をしたかがわかります。

于 2009-02-02T16:07:34.713 に答える