8

.NETモジュールを使用するMatlab(R2010b)アプリケーションをコンパイルしようとしていますが、MCRと.NETモジュール間の非互換性に関する問題に直面しています。

  • .NETモジュールは、VisualStudio2010でコンパイルされます。
  • MCRは、VisualStudio2010を使用するように構成されています。
  • このアプリケーションには、Visual Studio 2010でビルドされたいくつかのMexファイルも含まれており、MatlabとMCRの両方で問題なく動作します。

Matlab cliからアセンブリをロードすると、すべてが正常に機能しますが、アプリをコンパイルしてcmd.exeから実行すると、現在ロードされているランタイムよりも新しいランタイムでアセンブリがビルドされていることを示すエラーがスローされます。MatlabR2010bはVisualStudio2008で構築されており、これが問題であると考えていますが、誰かが問題の解決策を持っているのではないかと思います。

4

1 に答える 1

7

解決策は、アプリケーション構成ファイル (foo.exe という名前のアプリケーションの場合は foo.exe.config) をコンパイル済みの exe の横に次のエントリと共に提供することです。

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
 </configuration>

MATLAB .NET インターフェイスは .NET Framework 2.0 で構築されています。つまり、アプリ構成ファイルがない場合、2.0 CLR が読み込まれます。MATLAB で実行する場合、<supportedRuntime>構成ファイルのエントリは、MATLAB に 4.0 CLR が利用可能な場合はロードするように指示します。

于 2011-07-01T17:02:52.357 に答える