2017-01-30 9 views
1

IIS ExpressでASP.NETアプリケーションで32ビットDLLへの参照を追加しようとしました。ASP.NETアプリケーションで32ビットdllへの参照を追加する方法

しかし、問題があります。

'ファイルまたはアセンブリ' CppInerop.dll 'またはその依存関係の1つを読み込めませんでした。指定されたモジュールが見つかりませんでした。'

ターゲットプラットフォームをx86x64に設定しようとしましたが、何も変更されませんでした。

このdllは、コンソールとwinフォームアプリでうまくいきます。私はちょうどいずれかのCPUからこれらのもののtargetプロパティをx86に変更しました。

ただし、ASP.NETではまだ動作しません。私はいくつかの他のオプションを見て、必要なすべてを加えたdllもちろんビンに。しかし、何も結果を変えることはできません。

dllは、C++に書かれています。

さらに、fuslogvwを使用しましたが、このDLLについては何も記録しません。

なぜ、どうなるのかご覧ください。

答えて

0

これは簡単にはできません。

おそらく、DLLをアウトオブプロセスで呼び出すよう手配しなければならないでしょう。私はそのような仕事をそのように達成しました。

これは、Web要求のために働く必要があります。

1)標準入力/標準出力の上にDLLを呼び出すための適切なバイナリインタフェースを提供します.EXEを行います。 EXEは引数を非直列化し、DLL関数を呼び出し、結果を直列化してstdoutに送ります。あなたはAPIが大変なことを待つことを考えているかもしれません。さて、私はこれほど難しいAPIはまだ見ていない。私はこの方法でTWAINスキャンを行っています。

2).EXEと.DLLを別のディレクトリにインストールします。あなたのWebアプリケーションがそれを見つけ出す方法を見つけてください(web.configの相対パスまたはパラメータ)。

3)Webアプリケーションでバイナリインターフェイスの反対側を実装します。プロセスを開始し、要求をシリアライズし、プロセスの標準に要求を送信し、プロセスの標準出力から結果を読み込みます。

0
VS2015のために

(2013)あなたがするには、Visual Studioで行くことによって、32ビットまたは64ビットでIIS Expressを実行するように選択することができます:このオプションがオフになりたいあなたのケースのために

Tools -> Options -> Projects and Solutions -> Web Projects 
check/uncheck "Use the 64 bit version of IIS Express for web sites and projects" 

また、Webプロジェクトでは、ビルドのx86プラットフォームもターゲットにしていることを確認してください。

関連する問題