1

問題があります: で使用したい関数を Matlab で作成しましたasp.net
マシン上では正常に動作していますが、32-bitマシンに転送すると64-bit動作しません。

asp.netマシン上の Web サイトとの Matlab-dll 統合64-bitは例外を与えますが、マシン上では例外を与えません32-bit

バックグラウンド

Matlab コードを C# に統合する方法を学ぼうとしています。Matlab R2010a と Visual Studio 2010 を使用しています。Matlab File Exchange からチュートリアルをダウンロードし、コードの Matlab 部分を実行しました。

ただし、Visual Studio で C# コードをコンパイルしようとすると、次のエラーが発生しました。

ファイルまたはアセンブリ 'MWArray, Version=2.9.1.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

Google で簡単に検索すると、この mathworks pageにたどり着き、ターゲット プロセッサを x86 に変更するよう指示されました。

ただし、そうするとすぐに、新しいエラーを受け取りました。

System.BadImageFormatException が処理されませんでした

Message="ファイルまたはアセンブリ 'MWArray, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f' またはその依存関係の 1 つを読み込めませんでした。不適切な形式のプログラムを読み込もうとしました。"

私の MatLab バージョンは 64 ビットですが、まだこの問題が発生しています。回避策はありますか?

4

1 に答える 1

2

これを使ってみてください

C# から作成されたアプリケーションはマネージド コードとしてコンパイルされるため、プラットフォームに依存しません (Java など)。したがって、C# アプリケーションを 32 ビット マシンでコンパイルしてから 64 ビット マシンにデプロイすると、デフォルトで 64 ビット アプリケーションとして実行しようとします。次に、MWArray.dll の 64 ビット バージョンを見つけようとします。失敗すると、前述のエラーが表示されます。

この問題を回避するには、C# アプリケーションをコンパイルする前に、[プロパティ] -> [ビルド] -> [プラットフォーム ターゲット] オプションを [任意の CPU] ではなく [x86] に設定します。これにより、アプリケーションが 64 ビット マシン上で 32 ビット モードで起動するようになります。

于 2013-08-22T04:11:28.047 に答える