2

.net MVC アプリで win32 DLL を使用しようとしています。ただし、次のエラーが発生し続けますUnable to load DLL 'experiment_dll.dll': The specified module could not be found

プロセス モニターを使用して、DLL をロードしようとするコードが実行されたときのファイル システム アクティビティをキャプチャしました。DLL が表示され、ほとんどのファイル システム操作が成功したことを示しています。

ファイル システム アクティビティの 2 つのフルサイズのスクリーン キャプチャ -

スクリーンキャプチャ 1

スクリーンキャプチャ 2

ご覧のとおり、操作の 1 つの結果の 1 つが ですFILE LOCKED WITH ONLY READERS。これが、DLL のロードに失敗し、DLL が見つからないというエラー メッセージが表示される理由でしょうか?

UPDATE:この結果は実際には成功であり、問​​題にはならないというフォーラムのスレッドを見つけました - http://forum.sysinternals.com/topic21378.html

これがアクセス許可の問題である場合、どのように修正できますか? DLL ファイルと、Bin および Root フォルダーに対するアプリケーション プールの完全な制御を既に与えています。

テスト MVC アプリとテスト DLL (bool を受け取り、同じ bool を返す単一の関数をエクスポートするだけです) を作成しようとしました。テスト MVC x86 と DLL win32 (両方ともリリース ビルド) を作成し、Enable 32-Bit Applicationsアプリ プールを設定しようとしました。また、テスト用の MVC x64 と DLL x64 (両方ともリリース ビルド) を作成し、Enable 32-Bit Applicationsアプリケーション プールの設定を false に設定しようとしましたAny Cpu. 構成も試しました. すべてが同じエラーを生成し、すべてが同じファイル システム アクティビティを生成します画面キャプチャに示すように。

Azure 仮想マシンで実行されている IIS 8.5、Windows Server 2012 R2 に発行するときに、この問題が発生しています。

フリーに公開するmywebsite.azurewebsites.netとき、または開発マシンで実行するときに、DLL は問題なく読み込まれます。

4

1 に答える 1

2

サーバーで Dependency Walker を使用して DLL を確認したところ、Visual Studio でインストールされた依存関係がサーバーで利用できないことがわかりましたMSVCR120.dll。最初は、自分で DLL に依存関係を与えていなかったので、欠落している可能性のある依存関係は存在しないだろうと考えていました。だから私はそれを見落としました。悪い決断!

于 2014-04-30T14:50:23.077 に答える